TrackByFunction
Функция, которая может быть передана директиве NgForOf для настройки того, как NgForOf уникально идентифицирует элементы в итерируемой коллекции.
API
interface TrackByFunction<T> {
<U extends T>(index: number, item: T & U): any;
}
anynumberИндекс элемента в итерируемой коллекции.
T & UЭлемент в итерируемой коллекции.
any
Описание
Функция, которая может быть передана директиве NgForOf для настройки того, как NgForOf уникально идентифицирует элементы в итерируемой коллекции.
NgForOf необходимо уникально идентифицировать элементы в итерируемой коллекции, чтобы корректно обновлять DOM при переупорядочивании элементов, добавлении новых элементов или удалении существующих.
Во всех этих случаях обычно желательно обновлять только элементы DOM, связанные с элементами, затронутыми изменением. Это важно, чтобы:
- сохранять любое состояние интерфейса, специфичное для DOM (например, положение курсора, фокус и выделение текста), при изменении итерируемой коллекции
- обеспечивать анимацию добавления и удаления элементов, а также изменения порядка элементов в итерируемой коллекции
- сохранять значение элемента
<select>, когда вложенные элементы<option>динамически заполняются с помощьюNgForOfи связанная итерируемая коллекция обновляется
Обычно пользовательские функции trackBy используются, когда модель, по которой выполняет итерацию NgForOf, содержит свойство с уникальным идентификатором. Например, для модели:
class User {
id: number;
name: string;
...
}
пользовательская функция trackBy может выглядеть так:
function userTrackBy(index, user) {
return user.id;
}
Пользовательская функция trackBy должна обладать несколькими свойствами:
- быть идемпотентной (не иметь побочных эффектов и всегда возвращать одно и то же значение для заданного входного значения)
- возвращать уникальное значение для каждого уникального входного значения
- быть быстрой
Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/core/TrackByFunction