请协助角卫,我在下面有以下角卫:
getUserRole(): Observable<Response> {
const options = this.headers();
return this.http.get(`${environment.ApiUrl}/Roles/getRole`,options)
.map(res => res.json())
.catch(res => Observable.throw(res.json()));
}
在服务中:
getUserRole()
我正在尝试订阅this.role
函数,然后将响应分配给undefined
,但这种情况并未发生,角色始终为...subscribe(res => console.log(res))
。当我做{{1}}时,我会看到响应数据。
答案 0 :(得分:1)
在检查是否可以激活该路由之前,您必须等待异步HTTP请求的结果。
尝试返回一个新的Observable:
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<boolean> | Promise<boolean> | boolean {
return new Observable(observer => {
//
this.accountService.getUserRole().subscribe(role => {
//
if (role === 'admin') {
observer.next(true); // Allowing route activation
} else {
observer.next(false); // Denying route activation
}
}, err => observer.next(false));
});
}