*ngFor trackBy 多个属性

Sup*_*miu 6 angular

我*ngFor在一个 of 对象上使用了一个指令array,这些对象有很多属性。

我希望*ngFor仅当其中三个属性发生更改时才进行更新,但根据TrackByFunction 的文档,没有有效的示例说明如何实现这一点。

我尝试返回一个包含其中属性的对象,但它似乎不起作用,因为当任何其他属性发生更改时,模板仍然会再次呈现。

Kun*_*gen 5

尝试将 [ngForTrackBy]="trackSelectionsBy" 添加到您的元素,您的 trackSelectionsBy 方法应如下所示:

public trackSelectionsBy(index: number, myObject: MyObject): any {
    return myObject.id + myObject.count + myObject.startTime;
}
Run Code Online (Sandbox Code Playgroud)

并添加您自己的属性进行跟踪。


Den*_*lek 2

我知道这已经很旧了,但我认为问题是如何处理对跟踪比较器的响应。在您的示例中,您使用另一个对象进行回复,该对象与另一个对象相比将始终返回不同的值。

因此,每次创建对象时,{a: "ehhhh", b:"bee", c:"cee"}因为它具有有限的属性集,然后将其与另一个对象进行比较,即使属性值相同,但它们不是同一个对象。

如果您返回JSON.stringify(trackedObj),则比较的两个字符串可能会返回正确触发更改检测所需的布尔值。但那时我想知道字符串转换相对于标准的改进程度如何,除了它允许未更改的项目不从 dom 中删除..有趣的想法...

另一个SO中有更多细节:/sf/answers/80097461/