我正面临以下问题,我试图将来自API的JSON数据保存到我的Model对象数组中。但是,当我在console.log中打印出的数组" undefined"。我甚至试图打印一个简单的数组,它仍然说" undefined"。我不确定我在这里遗失了什么。我的代码如下。有些人可以帮忙,因为我是Angular 2和TypeScript的新手。
results : Array<Recipes> = new Array(20);
sample = ['one','two','three'];
getResults(): Observable<Recipes[]>{
return this.http.get('<my API here which works perfectly.>')
.map(this.extractData)
.catch(this.handleErrorObservable);
}
private extractData(res: Response) {
let body = res.json();
console.log(this.sample); **---> This prints undefined in console**
console.log(body);
console.log(body.pagination.count);
let total_no_of_results = body.pagination.count;
let no_of_results;
for(no_of_results = 0; no_of_results < total_no_of_results; no_of_results++) {
//this.results[no_of_results] = new Recipes();
this.results[no_of_results] = body.data[no_of_results].embed_url; **---> This gives "Cannot set property '0' of undefined" error and program exits**
//this.results.push(image);
}
console.log(this.results);
return this.results;
}
private handleErrorObservable (error: Response | any) {
console.error(error.message || error);
return Observable.throw(error.message || error);
}
答案 0 :(得分:0)
如果你想在extractData
内使用
.map(this.extractData.bind(this))
或
.map((data) => this.extractData(data))
否则this
将不会指向当前类的实例。