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');
    }));
}