角oauth2服务异步管道不起作用

时间:2020-10-14 08:43:48

标签: angular typescript angular2-observables angular-oauth2-oidc async-pipe

我想在用户登录时显示div,而在未登录时隐藏它。为此,我尝试在视图中使用可观察对象并使用异步管道。仅当使用F5刷新页面时,该功能才有效。看来,观测站运作不佳。这是我到目前为止所做的

在我创建的服务中

public loggedInObs: BehaviorSubject<boolean>;
constructor(private oauthService: OAuthService) {
      this.loggedInObs = new BehaviorSubject<boolean>(false);

    }
/** get authenticat state */
    public isAuthenticated(): Observable<boolean> {
      return from(this.oauthService.getAccessToken())
          .pipe(
            map(result => {
              console.log("logged")
              this.loggedInObs.next(true);
              return true;
            }),
            catchError(error => {
              console.log("Non Loggato")
              this.loggedInObs.next(false);
              return of(false);
            })
        );
    }

在app.component.ts

 isLoggedIn$: Observable<boolean>;  // the observable
  ngOnInit(): void {
    this.isLoggedIn$ = this.authService.isAuthenticated().pipe();
  }

这是视图

<div *ngIf="isLoggedIn$ | async"></div>
<div>Hello World</div>

我真的不明白

0 个答案:

没有答案