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