@zlodiak

Почему при отключенной стратегии onPush не срабатывает хук OnChanges()?

Пробую работать со стратегией onPush и вижу странные результаты. Помогите пожалуйста разобраться. Я покажу 2 странички, ошибка есть только в одной из них.

На ЭТОЙ страничке я использую стратегию onPush и получаю ожидаемый результат:
  1. в компоненте onpush-object.component при инициализации входной переменной msg присваивается значение.
  2. далее родительский компонент перезаписывает значение этой входной переменной. Причём перезаписывается именно объект, а не его свойство.
  3. соответственно при этом происходит вывод в консоль потому что срабатывает хук OnChanges()
  4. далее при изменении свойства входного объекта в шаблоне ничего не меняется потому что действует onPush
  5. по той же причине теперь не срабатывает хук OnChanges


На ЭТОЙ страничке я проделываю то же самое, но при этом стратегия onPush отключена.
  1. соответсвенно я ожидаю, что при изменени свойства входящего объекта в шаблоне будут происходит изменения(так и есть).
  2. и ожидаю, что будет срабатывать хук OnChanges(). Но он не срабатывает. Это мне не понятно.
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
StivinKing
@StivinKing
Ссылка на ваш объект не меняется. Хук OnChanges срабатывает только первый раз в обоих примерах и более не срабатывает, так как ссылка на объект не меняется, так как это всё тот же самый объект, даже если содержимое объекта изменилось. Во втором случае перерисовывается шаблон, потому что отключена стратегия onPush. Чтобы при стратегии onPush обрабатывались изменения объекта есть 2 варианта: создать новый объект или воспользоваться хуком DoCheck и самим прописать логику обнаружения изменения.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы