我正在尝试在服务方法中返回当前身份验证状态。(代码除返回外都有效。)我不熟悉对内部.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
});