首页 > 解决方案 > 查找函数中的“从不”类型上不存在属性“id”

问题描述

我正在使用 angular 并有级联选择

city: {};
area: {};
selectedAreas: [];
selectedSuburbs: [];
arrAddress = [{
  city: "Auckland",
  id: 1,
  areas: [{
    area: "Waitakere",
    id: 11,
    suburbs: [{
        suburb: "Rodney",
        id: 12
      },
      {
        suburb: "North Shore",
        id: 13
      },
      {
        suburb: "City",
        id: 14
      },
    ]
  }]
}];

onSelectCity(e) {
  this.city = this.arrAddress.find(element => element.id === Number(e.value));
  this.selectedAreas = this.city['areas'];
}

onSelectArea(e) {
  this.area = this.selectedAreas.find(element => element.id === Number(e.value));
  this.selectedSuburbs = this.area['suburbs'];
}

在函数中onSelectArea我收到错误element.id

“[ts] 类型‘从不’上不存在属性‘id’。”

有任何想法吗?提前致谢

标签: javascriptangulartypescript

解决方案


您从编译器得到的那个错误是由于selectedAreas没有正确声明。通过这样做property: [],您定义了一个只能容纳空数组的属性。

请改用以下内容,它设置默认值(与类型相反):

selectedAreas = [];  // note the equal sign

或者更好:

selectedAreas: Area[] = [];

whereArea将是您定义其属性的类。

您的其他属性也有同样的问题(property: {}定义一个只能是空对象的属性)。


推荐阅读