我试图填充一个对象array
在component
中全局声明,以在同一component
内的另一个函数中使用,但它没有得到填充。
浏览器网络选项卡显示response
http
调用的数据,但是当我尝试访问数组时,它显示undefined
.
这是我正在尝试的:
myArray: MyObject[];
requestPath: string;
one: string;
two: string;
three: string;
four: string;
ngOnInit() {
this.activatedRoute.queryParams.subscribe((params: Params) => {
this.one = params['one'];
this.two = params['two'];
this.three = params['three'];
this.four = params['four'];
this.requestPath = this.getRequestPath(this.one,this.two,this.three,this.four);
this.http.get(this.requestPath) //returns a json data
.map(res => res.json())
.subscribe(
data => { this.myArray = data;
},
err => console.error(err),
() => console.log('inside comparator oninit'));
});
this.add(this.myArray);
}
当我尝试在函数add
访问它时:
add(event){
alert("data is: "+event);
}
我在警报中得到data is undefined
,这意味着变量没有填充获取的数据。
正确的方法是什么?代码有什么问题?
您需要在订阅中拨打
,.subscribe(
data => { this.myArray = data;
this.add(this.myArray);
}
由于您正在调用异步调用,因此您必须在异步调用完成时调用您的方法。所以你需要像这样在订阅调用中调用你的函数。
试试这个——
.subscribe(
data => {
this.myArray = data;
this.add(this.myArray);
},