显然,OnPush策略相比Default降低了变化监测的复杂度,很好地提升了变化监测的性能。如果组件的更新只依赖输入属性的值,那么在该组件上使用OnPush策略是一个很好的选择。
encapsulation
ViewEncapsulation.None:无 Shadow DOM,并且也无样式包装。
ViewEncapsulation.Emulated:无 Shadow DOM,但是通过Angular提供的样式包装机制来模拟组件的独立性,使得组件的样式不受外部影响,这是Angular的默认设置。
ViewEncapsulation.Native:使用原生的 Shadow DOM 特性。
生命周期
当Angular使用构造函数新建组件后,就会按下面的顺序在特定时刻调用这些生命周期钩子方法:
生命周期钩子
调用时机
ngOnChanges
在ngOnInit之前调用,或者当组件输入数据(通过@Input装饰器显式指定的那些变量)变化时调用。
ngOnInit
第一次ngOnChanges之后调用。建议此时获取数据,不要在构造函数中获取。
ngDoCheck
每次变化监测发生时被调用。
ngAfterContentInit
使用
ngAfterContentChecked
ngAfterContentInit后被调用,或者每次变化监测发生时被调用(只适用组件)。
ngAfterViewInit
创建了组件的视图及其子视图之后被调用(只适用组件)。
ngAfterViewChecked
ngAfterViewInit,或者每次子组件变化监测时被调用(只适用组件)。
ngOnDestroy
销毁指令/组件之前触发。此时应将不会被垃圾回收器自动回收的资源(比如已订阅的观察者事件、绑定过的DOM事件、通过setTimeout或setInterval设置过的计时器等等)手动销毁掉。