Angular2 - 使用订阅返回逻辑值 canActivate

我是新的b。 Angular, 我需要实现返回的函数 true/false, 我要使用了 return 在 canActivate guard, 但这种功能消耗了 api 在 http.get, 因此,作为Asynchonne的连接,此功能始终返回 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/ =&gt; res.json///;
}


更新


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

return this.isLoggedIn//.map/loggedIn =&gt; {
if/!loggedIn/ {
this.loginService.redirectUrl = url;
this.router.navigate/['login']/;
}
return loggedIn;
}
}


</boolean></boolean>

要回复问题请先登录注册