Spec-Zone.ru › Angular

TrackByFunction

Функция, которая может быть передана директиве NgForOf для настройки того, как NgForOf уникально идентифицирует элементы в итерируемой коллекции.

NgForOf#ngForTrackBy

API

interface TrackByFunction<T> {
  <U extends T>(index: number, item: T & U): any;
}
any
@paramindexnumber

Индекс элемента в итерируемой коллекции.

@paramitemT & U

Элемент в итерируемой коллекции.

@returnsany

Описание

Функция, которая может быть передана директиве 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API