2018-07-05--Angular中的生命周期钩子理解

2018-07-05  本文已影响0人  快乐女孩筱梅

什么是生命周期钩子

简单点来说生命周期钩子就是Angular中一个组件从被创建到销毁期间的一些有意义的关键时刻.这些关键时刻在Angular中被Angular核心模块 @angular/core 暴露出来,赋予了我们在它们发生时采取行动的能力.
有哪些生命周期钩子
Angular中从一个组件的创建到销毁一个有八个生命周期钩子它们,按照先后顺序.它们分别是:

ngOnChanges()

@Input()
public name: string;
 
ngOnChanges(changes: SimpleChanges): void {
 console.log(changes); // name:SimpleChange {previousValue: "a", currentValue: "ab", firstChange: false}
}

上面是我定义了一个输入属性 name 并将从 a 它改为 ab 之后的打印结果,可能你还注意到了打印的结果中还有一个 firstChange 属性.它是一个Booleans,表明你是否是第一次改变.

同时,还有一点需要注意:你的输入属性定义为你引用类型和基本类型的时候其表现结果是不同的.当你的输入属性是基本类型时.你的每一次改变都会触发 ngOnChanges() 生命周期钩子,而当你的输入属性是引用类型时,你改变你引用类型 当中 的属性时,并不会触发 ngOnChanges() 生命周期钩子.只有当你将你引用类型数据的指针指向另一块内存地址的时候才会触发 ngOnChanges() 生命周期钩子.

ngOnInit()

ngDoCheck()

所以我们在使用 ngDoCheck() 生命周期钩子的时候一定要加上判断.以避免无用的触发干扰我们.

ngAfterContentInit()

// 父组件
<app-child>
 <p>我是父组件向子组件的投影内容</>
</app-child> 
 
// 子组件 ChildComponent
<div>
 //接受父组件的投影内容
 <ng-content></ng-content>
</div>

ngAfterContentChecked()

ngAfterViewInit()

ngAfterViewChecked()

ngOnDestroy

上一篇 下一篇

猜你喜欢

热点阅读