温馨提示:本文翻译自stackoverflow.com,查看原文请点击:angular - getting variable data outside subscribe method
angular angular4-httpclient angular-guards

angular - 在订阅方法之外获取变量数据

发布于 2020-03-31 23:05:49

我想为用户路由实现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值。如何在方法之外访问它。

查看更多

提问者
Ashish Jambhulkar
被浏览
17
Shashank Vivek 2018-04-10 17:59

这将是不可能的。原因是,您想呈现一个值,其值由Observable连续更改。

现在,当您尝试读取outside console.log时,由于该值尚未由Observable设置,因此您将无法定义streams现在,当值更改时(例如1秒钟后),outerconsole.log已经执行,因此您将不会看到this.data

要监视其值的变化,请将函数调用放在subscribe块本身中。

更新1

根据您的评论,您可以参考此链接