gpt4 book ai didi

angular - 返回 bool 值而不是订阅 canActivate

转载 作者:太空狗 更新时间:2023-10-29 17:32:30 24 4
gpt4 key购买 nike

我有一个受 canActivate 守卫保护的组件。 checkLogin 函数中的 Authguard 从一个可观察对象订阅,但我不知道如何从它返回一个 bool 值给 canActivate。

guard.service.ts

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
let url: string = state.url;

return this.checkLogin(url);
}

public checkService:boolean;
checkLogin(url: string):boolean {

return this.loadAppSettings().subscribe(res=>{
console.log(this.checkservice);
if (this.checkservice == true)
{
return true;
}
else{
this.router.navigate(['/error-user']);
return false;
}
});
}//checkLogin throws error as type subscription is not assignable to type boolean

所以我想要的是,如果 this.checkService 为真,它应该只返回 true 并且用户应该能够降落在 protected 路线上,但如果为假,他应该被导航到 错误用户

Angular2 - return boolean with subscribe to canActivate这个问题与我的相似,但无法解决我的问题。

有人可以帮忙吗

最佳答案

canActivate 也可以返回一个 observable,参见定义 CanActivate-interface .只需相应地更改您的返回类型即可。

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
let url: string = state.url;

return this.checkLogin(url);
}

public checkService:boolean;
checkLogin(url: string):Observable<boolean> {
return this.loadAppSettings().map(res=>{
console.log(this.checkservice);
if (this.checkservice == true)
{
return true;
}
else{
this.router.navigate(['/error-user']);
return false;
}
});
}

关于angular - 返回 bool 值而不是订阅 canActivate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43505024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com