Angular:无法读取未定义的属性“0”

时间:2017-11-22 18:26:02

标签: angular typescript

我正在尝试从API中显示提取的数据。我正在成功,因为它在控制台中可见。 当我尝试将数据放入数组时,我遇到了错误。

接口:

interface ISearchResponse {
  appendix: IAppendix;
}

interface IAppendix {
  Airports:IAirport[];
}

interface IAirport {
  name: string;
  city:string;
}

问题所在的代码:

ngOnInit() {
    console.log('SC: in OnInIt');
    this._searchEngine.getSites().subscribe(sites => {
      this.airports = sites;
      console.log("SC: SITES:"+this.airports.appendix.Airports[0].name);

    },
      error => this.errorMessage = <any>error);
  }

错误:

ERROR TypeError: Cannot read property '0' of undefined

2 个答案:

答案 0 :(得分:2)

有时 this.airports.appendix.Airports 可能为空,请添加支票 在使用索引

访问元素之前
this.airports = sites;
if(this.airports.appendix.Airports && this.airports.appendix.Airports.length > 0 ){
  console.log("SC: SITES:"+this.airports.appendix.Airports[0].name);
}

答案 1 :(得分:0)

我已经解决了。我做错了是我给'机场'一个首都'A'。当JSON数据将其作为“机场”时。因此,没有任何东西进入阵列,因为它不存在。