Angular: 订阅后对象可能为空

问题描述 投票:0回答:1

loadUserInfo()正在返回一个UserModel类型的Observable。我希望this.user也能在其他函数中被访问。现在,如果我尝试在订阅之外访问它,它说它是空的。在HTML中访问它也一样

  ngOnInit(){
     this.subscriptions.add(this.loadUserInfo().subscribe((user: UserModel) => {
           this.user = user;
      }));
  }
  someOtherFunc(){
     console.log(this.user) //Does not work here
  }
angular typescript rxjs observable subscribe
1个回答
0
投票

由于Observablessubscribe操作是异步的,所以你只能访问 this.user 只有在异步操作完成后才会出现。我已经添加了 this.someOtherFunc() 下面代码中的函数调用。

 ngOnInit(){
     this.subscriptions.add(this.loadUserInfo().subscribe((user: UserModel) => {
           this.user = user;
           this.someOtherFunc(); // call function here
      }));
  }
  someOtherFunc(){
     console.log(this.user) 
  }

请看网页的这一部分。https:/angular.iotutorialtoh-pt4#observable-heroservice。. 也可以参考这个答案。https:/stackoverflow.coma617544473389828。

© www.soinside.com 2019 - 2024. All rights reserved.