Angular Service返回可观察到的



我正在尝试在服务方法中返回当前身份验证状态。(代码除返回外都有效。)我不熟悉对内部.map的调用。我不知道如何返回可观察的。

public getSignedInStatus(): Observable<boolean> {
        this._gauth.getAuth().map(auth => {
            auth.then(function() {
                return Observable.of(auth.isSignedIn.get());
            });
        });
    }

在文档中,有一个订阅电话。我尝试将其更改为.map,但没有帮助。

this._gauth.getAuth()
        .subscribe(auth => {

错误是"A function whose declared type is neither 'void' nor 'any' must return a value."

我希望能够从任何组件调用该方法。这样的东西:

return this._userService.getSignedInStatus()
      .map(
        signedIn => {    
          if (signedIn === true) {
            return true;
          } else {
            return false;
          }
        },
        error => console.error('Error getting user status')
      );

和这样的身份,这样:

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
    this._userService.getSignedInStatus()
    .subscribe( response => {
        const status = response.isSignedIn.get();
        if (status === true) {
           return true;
        } else {
           this.router.navigate(['/signin']);
           return false;
        }
    },
    error => {
       console.error('Error getting user status');
       return false;
    });
  }
}

类似的东西应该起作用

public getSignedInStatus(): Observable<gapi.auth2.GoogleAuth> {
    return this._gauth.getAuth();
}

,在您的路线守卫中,您可以订阅可观察到的,然后返回

return this._userService.getSignedInStatus()
  .subscribe( response => {    
      return response.isSignedIn.get();
  },
  error => {
     return false
  });

最新更新