Был бы очень признателен, если бы вы могли объяснить причину
несколько условий 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
просто проверяет, установлен ли бит.