[英]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.