HTTP和角度:可观察到角度承诺

时间:2019-09-16 16:12:58

标签: angular

我想传播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代码显然没有任何意义,它只是用来解释我过去的工作方式。

我应该如何处理异步可观察对象,以便在数据可用后对其进行处理?

1 个答案:

答案 0 :(得分:1)

您可以从身份验证保护返回一个可观察的对象。这样

kubectl apply -f