我正在尝试提取数组的元素,但似乎未定义。
ngOnInit() {
this.route.params.subscribe(
(params : Params) =>{
this.id = params.id;
});
this.store.select('users').subscribe( data => {
this.users = data.users;
});
this.userService.getUserDetails(this.users[this.id].userId).subscribe(
user => {
this.userToEdit = user.Data;
console.log(this.userToEdit); <- this is showing the object
})
console.log(this.userToEdit); <- undefined
this.initForm();
}
我应该怎么做才能同时在订阅函数之外设置该值。
您需要在订阅内移动订阅后的逻辑。它是外部未定义的,因为外部console.log()
正在执行,而回叫是预订内的代码部分。
如果this.initForm()
使用订阅中的数据,那么您应该从订阅内部调用此函数,以确保所需的数据已准备好并在组件中可用。
this.userService.getUserDetails(this.users[this.id].userId).subscribe(user =>
{
this.userToEdit = user.Data;
console.log(this.userToEdit); <- defined within subscription.
this.initForm();
});
就未定义变量而言。
console.log(this.userToEdit);
这是可以预期的。