в ангуляре используется костыль под названием zone.js. Оно манкипатчит возможные асинхронные взаимодействия, например проброс события или резолв промиса, точный список не помню. И при срабатывании триггерит проверку изменений всего проекта, начиная сверху.
Если например выполнить какие-то асинхронные действия не затрагивая зону, например в обертке runOutsideAngular, то проверка не будет вызвана, даже если вы пометили компонент dirty.
Стратегия изменений определяет будут ли проверяться все компоненты вообще или только dirty.
Сейчас ангуляр движется в сторону собственных реактивных примитивов, т.н. signals, которые должны позволить уйти от проверки изменений вовсе и менять разметку точечно.