我的Angular 2应用程序的数组未定义错误

时间:2018-02-03 21:28:24

标签: arrays angular typescript

我正面临以下问题,我试图将来自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);
  }

1 个答案:

答案 0 :(得分:0)

如果你想在extractData内使用

.map(this.extractData.bind(this))

.map((data) => this.extractData(data))

否则this将不会指向当前类的实例。