我试图在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
,这意味着变量没有填充所提取的数据。
这样做的正确方法是什么?代码有什么问题?
答案 0 :(得分:1)
你需要在订阅中进行调用,
.subscribe(
data => { this.myArray = data;
this.add(this.myArray);
}
答案 1 :(得分:0)
当您调用异步调用时,您必须在异步调用完成时调用方法。所以你需要像这样在subscribe调用中调用你的函数。
试试这个 -
.subscribe(
data => {
this.myArray = data;
this.add(this.myArray);
},