订阅函数外部的未定义变量

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

我正在尝试提取数组的元素,但似乎未定义。

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();
    }

我应该怎么做才能同时在订阅函数之外设置该值。

angular
1个回答
0
投票

您需要在订阅内移动订阅后的逻辑。它是外部未定义的,因为外部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);

这是可以预期的。

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