Angular: 对象在订阅后可能为空
Angular: Object possibly null after subscribing to it
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
}
由于Observable/subscribe操作是异步操作,只有在异步操作完成后才能访问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.io/tutorial/toh-pt4#observable-heroservice. Also see this answer:
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
}
由于Observable/subscribe操作是异步操作,只有在异步操作完成后才能访问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.io/tutorial/toh-pt4#observable-heroservice. Also see this answer: