无法在角度6

时间:2018-05-24 09:37:27

标签: angular observable angular2-services subscribe rxjs6

我使用角度6服务从节点服务器获取对象。

getMasterObj () {

   this.http.get(this.url1).subscribe(
        (data) =>{
        this.masterChartObj1 = data;
        console.log(this.masterChartObj1) // data is getting printed
    })
        console.log(this.masterChartObj1) // undefined

}

在同一个类中,我将对象定义为

public masterChartObj1;

我正在使用subscribe方法接收的数据初始化该对象。 在console.log中检查它是否已打印,但在订阅者方法之外未定义相同。

我也以另一种方式尝试过,但仍然是相同的输出。

 getMasterObj () {
       let parent_scope = this;
       this.http.get(this.url1).subscribe(
            (data) =>{
            parent_scope.masterChartObj1 = data;
            console.log(parent_scope.masterChartObj1) // data is getting printed
        })
            console.log(this.masterChartObj1) // undefined

    }

请告诉我,如果我做错了什么......

2 个答案:

答案 0 :(得分:0)

这是因为observables asychronus 您正在使用subscribe方法中的异步数据。您无法访问该数据,直到它被订阅方法初始化为止。这就是你未定义的原因

答案 1 :(得分:0)

这是因为你的方法包含asyc方法调用。

this.http.get(this.url1).subscribe(
        (data) =>{
        this.masterChartObj1 = data;
        console.log(this.masterChartObj1) // data is getting printed
    })

这是一个异步调用,数据一旦可用,它将在(data)块中打印。

因此,如果您想为该数据添加一些绑定,则需要在data块中执行此类任务。