У меня есть виртуальная прокрутка в моем приложении, которая испускает кусок большого массива, а затем я перебираю эти элементы с помощью * ngFor, чтобы отобразить список li
элементов, которые внутри содержат довольно много кода. На основе текущего элемента массива он решает, какие кнопки и компоненты внутри li
отображать. Конечно, когда я прокручиваю вниз - создается новый фрагмент массива, поэтому все привязки меняются, и каждый элемент li
и его внутренние части получают новые данные, поэтому обнаружение изменений учитывает их все.
Проблема в том, что он немного отстает при прокрутке вниз. Вкладка «Производительность» Chrome показывает, что для обнаружения изменений для каждого элемента в списке требуется более 300 мс, и я заметил, что execEmbeddedViewsAction
вызывается несколько раз в течение этих 300 мс. Взгляни, пожалуйста. ![performance tab screenshot](https://i.stack.imgur.com/p9B3M.png)
Почему это происходит так часто? Каковы возможные решения моей проблемы? Стоит ли инкапсулировать все привязки к различным компонентам внутри li
в один отдельный объект, чтобы эти компоненты имели только одну привязку @Input
?