Angular2 – 返回布尔值,订阅canActivate
发布时间:2020-12-17 10:19:01 所属栏目:安全 来源:网络整理
导读:我是Angular中的新手,我需要实现一个返回true / false的函数,我将在canActivate中使用return,但是这个函数使用http.get的api,所以就像通信是异步的一样,这个函数总是返回FALSE,因为http.get还在进行中. 我的班主任: canActivate(route: ActivatedRouteSnaps
我是Angular中的新手,我需要实现一个返回true / false的函数,我将在canActivate中使用return,但是这个函数使用http.get的api,所以就像通信是异步的一样,这个函数总是返回FALSE,因为http.get还在进行中.
我的班主任: canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): boolean { let url: string = state.url; if (this.loginService.isLoggedIn()) { return true; } this.loginService.redirectUrl = url; this.router.navigate(['login']); return false; } 和函数isLoggedIn() isLoggedIn() { let logged: boolean = false; this.http.get('api/values',this.httpService.headers()) .map((res: Response) => { logged = res.json(); }); return logged; } 我读了很多问题,但我找不到答案.
后卫说明它可以回归
Observable<boolean>,Promise<boolean> or boolean 所以将isLoggedIn更改为: isLoggedIn() { return this.http.get('api/values',this.httpService.headers()) .take(1) .map((res: Response) => res.json()); } 更新 canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): boolean { let url: string = state.url; return this.isLoggedIn().map(loggedIn => { if(!loggedIn) { this.loginService.redirectUrl = url; this.router.navigate(['login']); } return loggedIn; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |