<div>
我有一个使用*ngFor
指令生成的简单列表,例如
<div *ngFor="let item of items() | async ; let i=index"
[ngClass]="getItemClass(i)"
(click)="itemClick(i)"</div>
如您所见,只要方法返回的 Observableitems()
发出,列表就会异步填充。在我的情况下,这样的 Observable 是 a ReplaySubject
,如果知道这有什么用的话。然后,我使用 方法定义要应用于每个<div>
元素的类getItemClass
。
我还想使用方法对每个项目的点击事件做出反应itemClick(i: number)
。
问题
任何时候单击一个div
元素,即任何时候itemClick(i: number)
运行该方法,似乎整个<div>
s 列表都被重建了。我得出这个结论,观察到任何时候div
单击一个元素,该items()
方法也会运行。
问题
<div>
单击其中一个元素时是否可以避免重建列表?我已经设置changeDetection
为OnPush但它似乎并没有解决我的问题。