Метод markForCheck в Angular используется для пометки компонента и его дочерних компонентов как "грязных" (dirty), чтобы показать Angular, что изменения произошли и нужно выполнить проверку изменений.
Когда вы вызываете markForCheck, Angular не непосредственно запускает проверку изменений. Вместо этого, Angular помечает компонент и дочерние компоненты как "грязные" и планирует на следующем такте проверить их изменения.
Однако, при использовании стратегии изменений OnPush, проверка изменений не инициируется сразу же после вызова markForCheck. Это происходит из-за того, что компоненты с этой стратегией изменений будут проверены только при наличии внешних изменений (событий извне, в том числе изменения во вводах компонентов). В этом случае, компоненты могут быть помечены как "грязные", но проверка изменений не будет инициирована до тех пор, пока не произойдут внешние изменения.
Таким образом, вызов markForCheck помогает Angular оптимизировать проверку изменений, делая ее более эффективной и эффективной.