Javascript 从angular 6 guard中的BehaviorSubject返回值
我选择这个方向是因为我有另一个守卫正在验证先前存储的令牌上的用户。这就是我在rxjs的前一个版本中所做的,现在在最新版本中,你不能映射到这个主题Javascript 从angular 6 guard中的BehaviorSubject返回值,javascript,angular,typescript,rxjs,behaviorsubject,Javascript,Angular,Typescript,Rxjs,Behaviorsubject,我选择这个方向是因为我有另一个守卫正在验证先前存储的令牌上的用户。这就是我在rxjs的前一个版本中所做的,现在在最新版本中,你不能映射到这个主题 canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean { return this.authservice.behavi
canActivate(next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return this.authservice.behaviorsubject().map(x => {
if (x) {
return true;
} else {
return false;
}
})
}
canActivate(下一步:ActivatedRouteSnapshot,
状态:RouterStateSnashot):可观察的|承诺|布尔值{
返回此.authservice.behaviorsubject().map(x=>{
if(x){
返回true;
}否则{
返回false;
}
})
}
我需要任何指导如何让这东西工作。我曾经尝试过这样的somting,但由于从未订阅过它,所以不会返回任何内容(而且当我console.log它时,它不是一个可观察的匿名主题)
canActivate(下一步:ActivatedRouteSnapshot,
状态:RouterStateSnashot):可观察的|承诺|布尔值{
返回此.authservice.behaviorsubject()管道(
地图(x=>{
if(x){
返回true;
}否则{
返回false;
}
})
)
}
还尝试使用observable.create()将其转换为observable,但无效。
我知道我错过了什么。
HeeeHelp:)在authservice中将您的行为主体作为可观察对象返回:
private _authed: BehaviorSubject<boolean> = new BehaviorSubject(null);
behaviorsubject():Observable<boolean> {
return this._authed.asObservable()
}
private\u authed:BehaviorSubject=newbehaviorsubject(null);
行为主体():可观察{
返回此。\u authored.asObservable()
}
还有一个小注释:CanActivate与Observable一起工作,因此如果您的behaviorsubject函数返回一个类型为boolean的Observable,您不需要映射它back@t3__rry您不需要订阅,请查看允许的返回类型。或者看看这个帖子:
private _authed: BehaviorSubject<boolean> = new BehaviorSubject(null);
behaviorsubject():Observable<boolean> {
return this._authed.asObservable()
}