【发布时间】:2018-09-19 20:47:05
【问题描述】:
我正在尝试为用户路由实现 canActivate,在此之前我想检查访问令牌是否仍然有效。因此我实现了这样的东西
export class AuthGuard implements CanActivate {
data:Array<Object>;
constructor(private base: BaseService){}
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): boolean {
var session: any = { token: localStorage.getItem('abc') };
this.base.valid(session).subscribe(result => {
this.data=result;
console.log(this.data); <-- first
});
console.log(this.data); <-- second
return true;
}
}
在这里,当我对它进行控制台操作时,我可以在 subscribe 方法中获取数据变量,但在此方法之外是给 undefined 值。如何在方法之外访问它。
【问题讨论】:
-
您缺少此关键字
-
在您致电
console.log(this.data);之前,您的订阅尚未完成。这就是你得到它的原因undefined -
抱歉,您说的是第一个控制台还是第二个控制台日志。
-
Ashish,请检查我的回答。你能帮我理解你的逻辑,这样我就可以根据你的要求给你一些建议
标签: angular angular4-httpclient angular-guards