角度生命周期顺序 - 澄清?

时间:2017-06-22 20:33:10

标签: javascript angular

阅读完文档和许多文章和示例后,I've created a test plnkr:

这是一个发出钩子日志的简单应用程序:

@Component({
    selector: 'app-root',
    template: `
      <h5>Lifecycle Events Log</h5>

      <ul>
        <li *ngFor="let log of logs">
         <code>{{ log }}</code>
        </li>
      </ul>`
})

export class AppComponent implements OnInit {
  name = 'Alice';
  logs: string[] = [];
  showChild = true;

  onLog(data) {    this.logs.push(data);  }
  ngOnInit() {      this.onLog(`onInit`);  }
  ngOnChanges() {     this.onLog(`ngOnChanges`);  }
  ngDoCheck() {    this.onLog(`doCheck`);  }
  ngAfterContentInit() {    this.onLog(`afterContentInit`);  }
  ngAfterContentChecked() {   this.onLog('afterContentChecked');  }
  ngAfterViewInit() {   this.onLog(`afterViewInit`);  }
  ngAfterViewChecked() {    this.onLog(`afterViewChecked`);  }
  ngOnDestroy() {   this.onLog(`onDestroy`);  }

}

结果:

Lifecycle Events Log

onInit
doCheck
afterContentInit
afterContentChecked
afterViewInit
afterViewChecked
doCheck
afterContentChecked

行。

  

ngOnChanges当Angular(重新)设置数据绑定输入时响应   特性

没有在这里,所以我没有看到这个事件。

  

ngOnInit - 文档:&#34;在第一次ngOnChanges()&#34; 之后调用一次。

在我的示例中,我没有发出ngOnChanges ngOnInit。那么?

  

ngDoCheck在每次更改检测运行期间调用。文档也   在ngOnChanges()和ngOnInit()之后立即说&#34; &#34;

为什么他们在这里提到ngOnchanges?它仅在ngOnInit之后被调用(!)。在我的示例中,我没有发出ngOnChanges ngOnchanges。那么他们为什么要写&#34; ngOnChanges()和(!)ngOnInit() &#34; ?

  

ngAfterContentInit - 文档:&#34;在Angular项目之后做出回应   外部内容进入组件的视图。&#34;

这涉及被抄袭的组件。 但是我没有在这里进行任何翻译。那么?他们还说:&#34;在Angular 检查投射到组件中的内容后做出响应。&#34;
检查什么? ,它不是在文档中写的。

  

ngAfterViewChecked - 文档:&#34;在Angular检查后回复   组件的视图和子视图&#34;

再次 - 检查什么?

另外 - 关于测试中的最后两个事件 -

为什么最后再次发出doCheckafterContentChecked

0 个答案:

没有答案