Angular будет воссоздавать элементы DOM, когда элементы в коллекции изменяются и отображаются с помощью *ngFor
. По умолчанию Angular отслеживает уникальность элементов, используя сравнение значений ===
.
Где элементы в массиве объектов, получаемые с сервера каждые 5 секунд.
Вероятно, означает, что массив items
представляет собой новый массив каждые 5 секунд. Таким образом, каждый элемент является новым элементом , и *ngFor
будет воссоздавать каждый элемент DOM.
Вы должны использовать trackby
, чтобы указать Angular использоватьitem.id
как уникальный идентификатор.
<tr *ngFor="let item of items; trackby: trackItems">
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
<td>{{ item.score }}</td>
<td><input size="7" /></td>
</tr>
Компонент:
const trackItems = (indx, item) => item.id;