Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular changeDetection中checkAndUpdateDirectiveInline函数的工作方式_Angular_Angular6_Angular2 Changedetection_Angular7 - Fatal编程技术网

Angular changeDetection中checkAndUpdateDirectiveInline函数的工作方式

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(); } 如果你能解释一下这次事故的原

我试图理解Angular中的changeDetection,但无法通过provider.ts中的函数check和updatedirectiveinline。源代码 . 如果您能详细说明函数中使用多个“if”条件的原因,以及函数如何确定何时以及调用哪个生命周期挂钩,我将不胜感激。例如,下面从函数中摘录的内容对我没有多大意义:

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