Observable<boolean> 无法正常工作
Observable<boolean> is not working properly
我正在尝试使用 userService
实现一个守卫以获取所需的信息。当前 UserService
看起来像这样:
getUserDetails(): Observable<User> {
this.requestUrl = `${configs.bgwssApi}v1/user/details`;
return this.http.get<User>(this.requestUrl).pipe(catchError(this.handleError));
}
isBoardMember(): Observable<boolean> {
this.getUserDetails().pipe(
map(data => {
if (data.userRole !== 'MEMBER') {
return of(false);
}
console.log(data); //Not printed
})
);
return of(true);
}
getUserDetails 工作正常,它 return 提供了所需的信息。但是 isBoardMember
总是 return 正确,因为我注意到它甚至不检查 userRole
。这里可能是什么问题?如何修复 isBoardMember
使其 return 成为正确的值,因为稍后我的警卫执行这样的检查,工作正常 btw:
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> {
return this.userService.isBoardMember().pipe(
map(data => {
if (data === false) {
this.router.navigate(['main']);
return false;
}
return true;
})
);
}
您需要 return observable。
isBoardMember(): Observable<boolean> {
return this.getUserDetails().pipe(map(data => {
return !(data.userRole !== 'MEMBER');
}));
}
我正在尝试使用 userService
实现一个守卫以获取所需的信息。当前 UserService
看起来像这样:
getUserDetails(): Observable<User> {
this.requestUrl = `${configs.bgwssApi}v1/user/details`;
return this.http.get<User>(this.requestUrl).pipe(catchError(this.handleError));
}
isBoardMember(): Observable<boolean> {
this.getUserDetails().pipe(
map(data => {
if (data.userRole !== 'MEMBER') {
return of(false);
}
console.log(data); //Not printed
})
);
return of(true);
}
getUserDetails 工作正常,它 return 提供了所需的信息。但是 isBoardMember
总是 return 正确,因为我注意到它甚至不检查 userRole
。这里可能是什么问题?如何修复 isBoardMember
使其 return 成为正确的值,因为稍后我的警卫执行这样的检查,工作正常 btw:
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> {
return this.userService.isBoardMember().pipe(
map(data => {
if (data === false) {
this.router.navigate(['main']);
return false;
}
return true;
})
);
}
您需要 return observable。
isBoardMember(): Observable<boolean> {
return this.getUserDetails().pipe(map(data => {
return !(data.userRole !== 'MEMBER');
}));
}