修改数组对象时如何触发更改检测?

gog*_*gog 2 typescript angular

在我的 angular4 应用程序中,我有一个基于数组的带有 *ngFor 指令的组件:

 <div *ngFor="let person of persons">
   {{person.name}}
   {{person.car}}
 </div>
Run Code Online (Sandbox Code Playgroud)

在组件的另一部分中,我可以删除汽车,因此在deleteCar()方法的订阅中,我将persons数组更新为:

 deleteCar(car) {
   this.carService.deleteCar(car).subscribe(() =>  {
   this.persons.filter(obj => obj.car == car.name)
               .forEach(i => i.car = null);
   }
 }
Run Code Online (Sandbox Code Playgroud)

问题是当我修改人数组中现有的人对象时,不会触发 *ngFor 循环。如何解决这个问题?

Deb*_*ppe 10

我通过解构数组来解决它。我不确定这是最好的方法。

this.persons = [...this.persons];
Run Code Online (Sandbox Code Playgroud)

只要它会改变数组的引用,angular 就会注意到数组已经更新。