输入输出属性必须是在有父子关系的组件间使用app
@Input() private keyword: string;
@Output() searchResult: EventEmmiter<any> = new EventEmmiter();
constructorangular4
构造函数。
ngOnchanges函数
绑定属性发生变化的时候调用,第一次调用必定在ngOnInit以前。
ngOninitcode
第一轮ngChanges以后调用,本钩子只调用一次。
ngDoCheck生命周期
在ngOnInit和ngDoCheck以后,会一直检查。
ngAfterContentInit事件
当内容投影进组件以后调用。第一次ngDoCheck以后调用,只调用一次,只适用于组件。父组件调用完成以后,全部子组件才会调用。
ngAfterContentChecked内存
每完成被投影组件内容发生变化时调用。ngAfterContentInit和ngDocheck以后调用,只适用于组件。父组件调用完成以后,全部子组件才会调用。
ngAfterViewInit路由
初始化完成组件试图及其子视图以后调用。第一次ngAfterContentChecked以后调用,只调用一次,只适用于组件。全部子组件调用完成以后,父组件才会调用。此阶段更改属性的值会报错,可在settimeout后运行。
ngAfterViewCheckedstring
每次作完组件视图和子组件视图的变动检测以后调用。ngAfterViewInit和ngAfterContentChecked以后调用,只适用于组件。全部子组件调用完成以后,父组件才会调用。此阶段更改属性的值会报错,可在settimeout后运行。
ngDoDestoryit
组件销毁时调用,主要用于内存回收。路由跳转时组件会销毁。
执行顺序:
constructor ↓ ngOnChanges ↓ ngOnInit ↓ ngDoCheck ↓ ngAfterContentInit ↓ ngAfterContentChecked ↓ ngAfterViewInit ↓ ngAfterViewChecked ngDoCheck ↓ ngAfterContentChecked ↓ ngAfterViewChecked ... ngDestory
不管变动发生在哪一个组件上,zone.js都将会检查整个angular组件树,从根组件appComponent开始,直至全部组件所有检查完成。
onpush策略是当组件的输入属性发生变动时才会检查当前组件及其子组件。