# 组件生命周期

当 Angular 实例化组件类并渲染组件视图及其子视图时,组件实例的生命周期就开始了。生命周期一直伴随着变更检测,Angular 会检查数据绑定属性何时发生变化,并按需更新视图和组件实例。

# 生命周期的顺序

Angular 会按一下顺序执行钩子方法

  • ngOnChanges
  • ngOnInit 相当于 Vue Init
  • ngDoCheck
  • ngAfterContentInit 相当于 Vue created
  • ngAfterContentChecked
  • ngAfterViewInit 相当于 Vue mounted
  • ngAfterViewChecked
  • ngOnDestroy 相当于 Vue beforeDestroy

注意:ngOnChanges ngDoCheck ngAfterContentChecked ngAfterViewChecked 在一个组件存活时,经常被多次触发,所以让它们的逻辑尽可能保持精简是非常重要的。

# 在实例销毁时进行清理

把清理逻辑放进 ngOnDestroy() 中,这个逻辑就必然会在 Angular 销毁该指令之前运行。

  • 取消订阅可观察对象和 DOM 事件
  • 停止 interval 计时器
  • 注销该指令在全局或应用服务中注册过的所有回调