指令和组件的实例都有一个生命周期:新建、更新和销毁。
当Angular使用构造含新建一个组件或指令后,就会按照特定的顺序调用这些生命周期钩子方法:
他们的顺序为:
- ngOnChanges():当组件数据绑定的输入属性发生改变时发生,该方法接受一个SimpleChanges对象,包括当前值和上一属性值。首次调用一定发生在ngOnInit前,注意的是该方法仅限于对象的引用发生变化时,也就是说,如果对象的某个属性发生变化,Angular是不会触发onChanges的
- ngOnInit():初始化指令或组件,在angular第一次展示组件的绑定属性后调用,该方法只调用一次
-
ngDocheck: 检测,并在发生Angular无法或不愿意自己检测的变化时作出反应。
在每个Angular变更检测周期中调用,ngOnChanges()
和ngOnInit()
之后。- ngAfterContentInit: 当把内容投影进组件之后调用。
第一次ngDoCheck()
之后调用,只调用一次. 只适用于组件。 - ngAfterContentChecked: 每次完成被投影组件内容的变更检测之后调用。
ngAfterContentInit()
和每次ngDoCheck()
之后调用,只适合组件。 - ngAfterViewInit: 在
angular
初始化组件及其子组件的视图之后调用, 只调用一次,第一次ngAfterContentChecked()
之后调用.只适合组件。 - ngAfterViewChecked: 每次做完组件视图和子视图的变更检测之后调用。
ngAfterViewInit()
和每次ngAfterContentChecked()
之后调用。只适合组件。
- ngAfterContentInit: 当把内容投影进组件之后调用。
- ngOnDestroy:在
angular
每次销毁组件或指令之前调用, 通常用于移除事件监听,退订可观察对象等。释放那些不会被垃圾收集器自动回收的各类资源的地方。取消那些对可观察对象和DOM事件的订阅。停止定时器。注销该指令曾注册到全局服务或应用级服务中的各种回调函数。