Angular changeDetection中checkAndUpdateDirectiveInline函数的工作方式
我试图理解Angular中的changeDetection,但无法通过provider.ts中的函数check和updatedirectiveinline。源代码 . 如果您能详细说明函数中使用多个“if”条件的原因,以及函数如何确定何时以及调用哪个生命周期挂钩,我将不胜感激。例如,下面从函数中摘录的内容对我没有多大意义:Angular changeDetection中checkAndUpdateDirectiveInline函数的工作方式,angular,angular6,angular2-changedetection,angular7,Angular,Angular6,Angular2 Changedetection,Angular7,我试图理解Angular中的changeDetection,但无法通过provider.ts中的函数check和updatedirectiveinline。源代码 . 如果您能详细说明函数中使用多个“if”条件的原因,以及函数如何确定何时以及调用哪个生命周期挂钩,我将不胜感激。例如,下面从函数中摘录的内容对我没有多大意义: if (def.flags & NodeFlags.DoCheck) { directive.ngDoCheck(); } 如果你能解释一下这次事故的原
if (def.flags & NodeFlags.DoCheck) {
directive.ngDoCheck();
}
如果你能解释一下这次事故的原因,我将不胜感激
函数中使用了多个“如果”条件
多个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,
export const enum NodeFlags{
...
OnInit=1