@kovdimaleks7

Как именно работает markForCheck в Angular при detection changes?

Всем привет, в официальной документации сказано, что markForCheck помечает компонент и его родителей как
"подлежащих проверке" при текущем или следующем цикле проверки изменений но ничего не сказано запускается ли эта проверка сразу после этого и кто ее запускает, знаете ли Вы что-то про это?

Возможна ли такая ситуация, что мы вызвали markForCheck (при стратегии onPush), компоненты пометились как dirty, но проверка не запустилась?
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
в ангуляре используется костыль под названием zone.js. Оно манкипатчит возможные асинхронные взаимодействия, например проброс события или резолв промиса, точный список не помню. И при срабатывании триггерит проверку изменений всего проекта, начиная сверху.

Если например выполнить какие-то асинхронные действия не затрагивая зону, например в обертке runOutsideAngular, то проверка не будет вызвана, даже если вы пометили компонент dirty.

Стратегия изменений определяет будут ли проверяться все компоненты вообще или только dirty.

Сейчас ангуляр движется в сторону собственных реактивных примитивов, т.н. signals, которые должны позволить уйти от проверки изменений вовсе и менять разметку точечно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы