Sobes.tech
Middle

Componenta părinte utilizează strategia OnPush, componenta fiu — Default. Ce se întâmplă cu componenta fiu în cazul modificărilor? În ce direcție se face verificarea detectării schimbărilor — de sus în jos sau de jos în sus?

sobes.tech AI

Răspuns de la AI

Когда родительский компонент использует стратегию обнаружения изменений OnPush, а дочерний — Default, поведение следующее:

  • Родительский компонент будет проверяться Angular только при изменении входных данных (Input) или при событии внутри компонента.
  • Дочерний компонент с Default стратегией проверяется при каждом цикле обнаружения изменений, если он находится в дереве компонентов, который Angular проверяет.

Проверка изменений в Angular идёт сверху вниз по дереву компонентов. Это значит, что сначала проверяется родительский компонент, затем его дети.

Если родительский компонент не изменился (OnPush и входные данные не изменились), Angular не будет проверять его дочерние компоненты, даже если у дочернего стоит Default стратегия.

Таким образом, дочерний компонент с Default стратегией будет проверяться только если родительский компонент был помечен на проверку (например, изменились входные данные или вызван detectChanges).

Итог:

  • Change detection идёт сверху вниз.
  • OnPush у родителя ограничивает проверку дочерних компонентов.
  • Default у дочернего компонента не заставит Angular проверять его, если родитель не проверяется.