angular – 返回布尔值而不是订阅canActivate
发布时间:2020-12-17 17:51:38 所属栏目:安全 来源:网络整理
导读:我有一个受canActivate防护保护的组件. checkLogin函数中的Authguard从一个observable订阅,但我不知道如何从它返回一个布尔值到canActivate. guard.service.ts canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): boolean { let url:
我有一个受canActivate防护保护的组件. checkLogin函数中的Authguard从一个observable订阅,但我不知道如何从它返回一个布尔值到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,它应该返回true并且用户应该能够登陆被保护的路由但是如果它是假的,他应该被导航到错误用户. 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; } }); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |