Работа функции checkAndUpdateDirectiveInline в changeDetection - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь понять changeDetection в Angular и не могу пройти мимо функции checkAndUpdateDirectiveInline в provider.ts. Исходный код здесь , Был бы очень признателен, если бы вы могли объяснить причину множественных условий «если», используемых в функции, и то, как функция определяет, когда и какой хук жизненного цикла вызывать. Например, следующий отрывок из этой функции мало что говорит мне:

if (def.flags & NodeFlags.DoCheck) {
    directive.ngDoCheck();
  }

1 Ответ

0 голосов
/ 12 ноября 2018

Был бы очень признателен, если бы вы могли объяснить причину несколько условий if, используемых в функции

Несколько if условий - это просто встроенная версия функции checkAndUpdateDirectiveDynamic ниже. Раньше это была более быстрая реализация, сейчас не уверен.

как функция определяет, когда и какой хук жизненного цикла вызывать.

def.flags - битовая маска , для ловушек установлены определенные биты:

export const enum NodeFlags {
  ...
  OnInit = 1 << 16,
  OnDestroy = 1 << 17,
  DoCheck = 1 << 18,
  OnChanges = 1 << 19,
  AfterContentInit = 1 << 20,
  AfterContentChecked = 1 << 21,
  AfterViewInit = 1 << 22,
  AfterViewChecked = 1 << 23,

он устанавливается компилятором, который проверяет, реализован ли метод в классе компонента во время компиляции. Оператор def.flags & NodeFlags.DoCheck просто проверяет, установлен ли бит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...