我想传播HTTP响应的结果。
在这种情况下,我希望AuthGuard调用服务,然后返回响应的一个属性。
服务:
export class AuthService {
constructor(protected http: HttpClient) { }
check(): Observable<AuthStatus> {
return this
.http
.get<AuthStatus>('./assets/mock-services/auth/check.json')
}
}
守卫:
export class AuthGuard implements CanActivate {
constructor(protected auth: AuthService) { }
canActivate(): boolean {
let status: AuthStatus;
this.auth.check(); // <-- what to do here?
}
}
AuthStatus
是一个简单的界面,具有一个唯一属性:authenticated
。
我想在canActivate方法中做的是打开响应并返回布尔status.authenticated
字段,但是我不确定该怎么做。
我对angularjs会做些什么:
$scope.check= function() {
return $http.get('foo'); // returns json { result: true }
}
$scope.canActivate= function() {
return $scope.check().then(function(response){
return response.data.result;
});
}
现在,这个Angular代码显然没有任何意义,它只是用来解释我过去的工作方式。
我应该如何处理异步可观察对象,以便在数据可用后对其进行处理?
答案 0 :(得分:1)
您可以从身份验证保护返回一个可观察的对象。这样
kubectl apply -f