У меня есть компонент таблицы данных (angular2-data-table), где мы изменили проект из традиционного определения изменения углов в OnPush
для оптимизации скорости рендеринга.Angular2 ngFor Обнаружение изменения с помощью муфт массива
После того, как была реализована новая стратегия обнаружения изменений, ошибка была указана, поскольку таблица не обновляется, когда объект данных мутирован, например, обновления свойств объекта. Ссылка: https://github.com/swimlane/angular2-data-table/issues/255. Сильный вариант использования может быть сделан для такого типа потребностей в таких вещах, как встроенное редактирование или внешние изменения данных, в единое свойство в большом сборе данных, таком как биржевой тикер.
Чтобы устранить эту проблему, мы добавили пользовательскую функцию проверки свойств trackBy, которая называется trackByProp
. Ссылка: commit. К сожалению, это решение не решило проблему.
На demo page при активной перезагрузке вы можете увидеть демонстрацию, на которую ссылаются в приведенном выше фиксации, но не обновлять таблицу до тех пор, пока вы не нажмете кнопку, чтобы вызвать обнаружение изменений.
Структура компонента что-то вроде:
Table > Body > Row Group > Row > Cell
все эти компоненты реализации OnPush
. Я использую геттеры/сеттеры в наборе строк для запуска перерасчета страниц, как показано на рисунке here.
Мы хотим остаться с обнаружением изменений OnPush
для тех, кто реализует этот шаблон, однако в качестве проекта с открытым исходным кодом с несколькими потребителями можно утверждать какую-то функцию пользовательской проверки для видимых значений строк на экране.
Все, что сказал, trackBy
не вызывает обнаружение изменений в значениях ячейки строки, что является лучшим способом для этого?
Вопрос должен включать код, который позволяет воспроизвести проблему. –