Возможно, вы захотите использовать trackBy
.Вы можете добавить эту дополнительную часть к каждому из ваших *ngFor
, чтобы помочь Angular узнать, нужно ли перерисовывать каждый срез.Он будет использовать значение, возвращаемое trackBy
, чтобы определить, является ли строка грязной (т. Е. lastTrackByResult === currentTrackByResult
).
<tr *ngFor="let row of rows; trackBy: rowTrackByFunction">
А затем в вашем контроллере:
rowTrackByFunction(index, item) {
// You will want to return a unique primitive for angular to use as a comparison item
// (string, number, etc.)
return item.someUniqueIdentifier;
}
См. Эту ссылку для получения дополнительной информации:
https://netbasal.com/angular-2-improve-performance-with-trackby-cc147b5104e5
PS Если производительность становится действительно важной, вы можете рассмотреть возможность использования готового компонента таблицы, который поставляется со встроенной виртуальной прокруткой.Я бы порекомендовал NGX-Datable, который может легко обрабатывать тысячи строк, рисуя только то, что в данный момент видит пользователь.http://swimlane.github.io/ngx-datatable/