当在Angular中使用*ngFor循环渲染DOM时,在进行数组的增删操作时,可能会遇到“object's identity must change”错误。这是由于Angular的变更检测机制所导致的,它要求数组中的每个元素具有唯一的标识符。
解决方法是使用trackBy函数,它可以告诉Angular如何跟踪DOM元素之间的变化。当数组中的元素发生变化时,必须返回一个新的标识符来表示该元素的唯一性,以便Angular更新DOM。
例如,我们有一个人员列表,每个人都有一个唯一的ID。我们可以使用trackBy来告诉Angular如何跟踪这些人员:
{{ person.name }}
// 在组件中定义trackById函数,返回人员的唯一ID
trackById(index: number, person: Person) {
return person.id;
}
这样,当我们向列表中添加或删除人员时,Angular就可以正确地更新DOM。