我们可以使用trackBy来标识每个项目。 我们可以使用trackBy来避免删除元素之后重新绘制旧元素。 我们先添加trackBy函数来标识每个项目:
items = [{id: 1, name: 'item 1'}, {id: 2, name: 'item 2'}, {id: 3, name: 'item 3'}];
trackById(item) {
return item.id;
}
接下来,我们可以在模板中使用*ngFor指令以及trackBy来避免重新绘制旧元素:
{{ item.name }}
现在,即使我们对数组进行重新赋值,Angular也能够正确地识别项目,并且交错动画能够正常工作:
replaceItems() {
this.items = [{id: 1, name: 'new item 1'}, {id: 4, name: 'new item 4'}, {id: 5, name: 'new item 5'}];
}
关键是使用trackBy函数来标识每个项目,这使得Angular能够正确地重用现有元素,从而避免重新绘制旧元素。