Да.
Как и при обнаружении изменений на основе зон, он предотвращает проверку ваших компонентов, если в этом нет необходимости, и, таким образом, повышает производительность каждого компакт-диска.
Компоненты, использующие стратегию обнаружения изменений OnPush
, будут проверены при обнаружении изменений, если родительский элемент был проверен и если:
markForCheck()
/AsyncPipe
)Можно сказать, что стратегия OnPush
решает, какой компонент будет проверяться CD.
Приложениям Angular также необходимо решить, когда с помощью ApplicationRef
срабатывает галочка. Это то, что мы называем планированием. Когда на самом деле стартует CD?
В приложениях Zone Zone.js является планировщиком посредством исправления всех асинхронных API (setTimeout()
, Promise, addEventListener()
и т. д.). Когда один из них вызывается, запланирован компакт-диск.
В бесзональных приложениях это больше невозможно, поскольку никакие API не исправлены. Платформе необходимо найти другой способ планирования CD. Сегодня он использует следующее:
set()
или update()
)markForCheck()
или AsyncPipe
Подводить итоги:
OnPush
— какой компонент проверяетсяТакже, чтобы внести ясность: OnPush
не является значением по умолчанию при использовании бесзонального планирования.