Мутация объекта сохраняет его ссылку, поэтому OnPush-компонент может не получить уведомление о новом input и оставить старое отображение.
Что произойдёт при изменении объекта без изменения ссылки, особенно при стратегии OnPush, и как обработать такое обновление?
Мутация объекта сохраняет его ссылку, поэтому OnPush-компонент может не получить уведомление о новом input и оставить старое отображение.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Что произойдёт при изменении объекта без изменения ссылки, особенно при стратегии OnPush, и как обработать такое обновление?
Ответ
Мутация объекта сохраняет его ссылку, поэтому OnPush-компонент может не получить уведомление о новом input и оставить старое отображение.
Предпочтительно создать новое значение, например { ...item, name: nextName }, и передать его как input. Другие события или markForCheck могут инициировать проверку, поэтому проблема не означает, что мутация никогда не отображается. Для сигналов также важны правила сравнения и корректное уведомление об изменении.