У меня есть простой список <div>
, сгенерированный с использованием директивы *ngFor
, что-то вроде
<div *ngFor="let item of items() | async ; let i=index"
[ngClass]="getItemClass(i)"
(click)="itemClick(i)"</div>
Как видите, список заполняется асинхронно каждый раз, когда Observable возвращается методом items()
излучает.В моем случае такой Observable является ReplaySubject
, если это может быть полезно знать.Затем я определяю классы, которые будут применены к каждому элементу <div>
, используя метод getItemClass
.
Я также хочу реагировать на событие щелчка по каждому элементу, используя метод itemClick(i: number)
.
Проблема
Каждый раз, когда нажимается элемент div
, т. Е. Каждый раз, когда запускается метод itemClick(i: number)
, кажется, что весь список <div>
с перестроен.Я прихожу к такому выводу, наблюдая, что при каждом нажатии на элемент div
также запускается метод items()
.
Вопрос
Можно ли избежатьвосстановить список при нажатии одного из элементов <div>
?Я уже установил changeDetection
на OnPush , но это, похоже, не решает мою проблему.