我使用角度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
}
请告诉我,如果我做错了什么......
答案 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
块中执行此类任务。