簡體   English   中英

從AngleSubguard中的BehaviorSubject返回值

[英]Returning value from BehaviorSubject in angular 6 guard

我要朝這個方向前進,因為我還有另一個警衛正在驗證先前存儲的令牌上的用戶。 這是我在先前版本的rxjs中所做的,而現在卻是您無法映射的最新版本。

canActivate(next: ActivatedRouteSnapshot,
           state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
  return this.authservice.behaviorsubject().map(x => {
    if (x) {
      return true;
    } else {
      return false;
    }
  })
}

我需要任何指導來使這件事起作用。 我已經嘗試過像這樣抽煙了,但是因為從未訂閱過它,所以不會返回任何東西(而且在我進行console.log記錄時,它不是Observable的AnonymusSubject)

canActivate(next: ActivatedRouteSnapshot,
           state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
  return this.authservice.behaviorsubject().pipe(
    map(x => {
      if (x) {
        return true;
      } else {
        return false;
      }
    })
  )
}

還嘗試使用Observable.create()將其轉換為Observable,但無法正常工作。 我知道我錯過了一些東西。 Heeeeelp :)

在您的authservice中將您的behaviorSubject作為可觀察值返回:

private _authed: BehaviorSubject<boolean> = new BehaviorSubject(null);

behaviorsubject():Observable<boolean> {
   return this._authed.asObservable()
}

還有一條小評論:CanActivate可與observables一起使用,因此,如果您的behaviorsubject函數返回類型為boolean的Observable,則無需對其進行映射

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM