我正朝着这个方向前进,因为我的另一名警卫正在先前存储的令牌上验证用户。这就是我在之前版本的rxjs中所做的事情,现在是最新的关于这个主题的地图。
canActivate(next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return this.authservice.behaviorsubject().map(x => {
if (x) {
return true;
} else {
return false;
}
})
}
我需要任何指导如何使这件事工作。我尝试过像这样的事情,但是因为从来没有订阅过它,所以不会返回任何内容(当我登录时,它也不是一个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:)
答案 0 :(得分:0)
将您的behaviorSubject作为authservice中的observable返回:
private _authed: BehaviorSubject<boolean> = new BehaviorSubject(null);
behaviorsubject():Observable<boolean> {
return this._authed.asObservable()
}
也是一个小注释:CanActivate适用于observable,所以如果你的behaviorubject函数返回一个类型为boolean的Observable,你就不需要映射它