我正在玩角2 alpha 44。
我有一个树模型并使用递归来显示它。 每个小组都包含' Criterions',' Segments'和其他人'团体'。 我们可以在任何级别删除和添加所有这些元素。
当我删除元素然后在同一级别上添加其他元素时,会有一种奇怪的行为。
新订单是错误的,新元素有一个更大的position
属性,数组在此属性上排序,但它们出现在元素被删除的位置..
新阵列将在控制台中记录,并以正确的顺序显示。 如果您使用" SHOW / HIDE"删除并添加所有树。按钮,视图现在顺序正确。
你可以see this behavior in this plunker and understand easily:
是否有像ng1 trackBy
和ng2 NgFor
这样的内容?
我在消息来源中找不到任何相关信息。
答案 0 :(得分:1)
trackBy
已添加到2.0.0-beta.3
另见https://github.com/angular/angular/issues/4402
使用模板元素:
@Component(
template: `
<template ngFor let-item [ngForOf]="items" [ngForTrackBy]=customTrackBy">
{{item}}
</template>
`
)
class MyComponent {
customTrackBy(index: number, obj: any): any {
return index;
}
}
使用* ngFor:
@Component(
template: `
<div *ngFor="let item of items; trackBy:customTrackBy">
{{item}}
</div>
`
)
class MyComponent {
customTrackBy(index: number, obj: any): any {
return index;
}
}
另见https://github.com/angular/angular/issues/6872
我可以使用*
*ngFor="let character of characters | async" *ngForTrackBy="customTrackBy"
或者我可以使用
*ngFor="let character of characters | async ; trackBy:customTrackBy"