代码之家  ›  专栏  ›  技术社区  ›  AJ-

角度6-无法使用筛选方法读取空值的属性

  •  0
  • AJ-  · 技术社区  · 7 年前

    角度方面的新问题,所以这可能是一个简单的问题!

    我有一个 observable 给我一张 objects .

    这些 物体 有一个可选的 property 我正在尝试筛选 物体 基于此 财产 .

    getPersonWithHouse(houseID: string): Person[] {
      this.myService.getPersons().subscribe(persons => {
         this.personsWithHouse = persons.filter(person => {
             if (person.house) return person.house.id === houseID;
         });
       });
     return this.personsWithHouse;
    }
    

    所以基本上,在这个函数中,我用一个house作为参数,然后我订阅所有人的列表,并将所有人都保存在一个变量中。

    我不断地得到 "cannot read property "ID" of null"

    还有一个 "not all code paths return a value" 但这是因为我把 If 没有 else 但是我不知道 其他的 我可以放在那里。

    我怎么修这个?主要问题是如果 person 有一个 house ,这是可行的,但是 房子 属性是可选的,有些 persons 没有,所以我有这个错误

    谢谢您

    2 回复  |  直到 7 年前
        1
  •  1
  •   Sachila Ranawaka    7 年前

    if (person.house && person.house.id) return person.house.id === houseID;
    return false;
    
        2
  •  0
  •   M3ghana    7 年前

    persons.filter((person) => person.house && person.house.id && (person.house.id === houseID));