We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
component/directive都有生命周期(组件也是指令),下以组件举例说明
import { OnChanges, SimpleChanges, } from "@angular/core";
调用时机:传到组件的值变化时调用(一般为@input接的数据)。
参数:SimpleChange;它是一个对象,有如下属性
class SimpleChange { constructor(previousValue: any, currentValue: any, firstChange: boolean) previousValue: any // --> 变化之前的值 currentValue: any // --> 变化之后的值 firstChange: boolean // 是否为第一次变化 isFirstChange(): boolean // 一个方法,返回是否为第一次变化,返回值和firstChange一样 }
@Input() title; ngOnChanges(simpleChange:SimpleChanges){ // 判断是否存在方式报错 if('title' in simpleChange){ console.log("变化之前的值", simpleChange.title.previousValue) console.log("变化之后的值", simpleChange.title.currentValue) } }
注意事项:若传过来的值为引用类型,引用发生变化才会调用这个生命周期。
ng-content
在constructor里并不是所有数据都已经存在,比如@ContentChildren/@ContentChild/@ViewChildren/@ViewChild/@Input在执行constructor的时候并不存在,相关代码最好都放在ngOnInit。
@ContentChildren/@ContentChild/@ViewChildren/@ViewChild/@Input
AfterContentInit把ng-content投射过来的内容初始化完成调用。如果是想要对ng-content传递过来的操作可以使用它。 AfterViewInit是把组件、子组件的的其他内容初始化完成调用。如果想对页面操作可以使用它。
AfterContentInit
AfterViewInit
==不可以在AfterContentInit、AfterViewInit生命周期里去改变父组件的值!==
The text was updated successfully, but these errors were encountered:
No branches or pull requests
1. 有哪些生命周期?
1.1 OnChanges
调用时机:传到组件的值变化时调用(一般为@input接的数据)。
参数:SimpleChange;它是一个对象,有如下属性
SimpleChange使用示例
注意事项:若传过来的值为引用类型,引用发生变化才会调用这个生命周期。
1.2 OnInit
1.3 DoCheck
1.4 AfterContentInit
ng-content
接收的内容。1.5 AfterContentChecked
1.6 AfterViewInit
1.7 AfterViewChecked
1.8 OnDestroy
2. FAQ
2.1 constructor 和 OnInit 有啥区别?
在constructor里并不是所有数据都已经存在,比如
@ContentChildren/@ContentChild/@ViewChildren/@ViewChild/@Input
在执行constructor的时候并不存在,相关代码最好都放在ngOnInit。2.2 AfterContentInit 和 AfterViewInit 有啥不一样的?
AfterContentInit
把ng-content
投射过来的内容初始化完成调用。如果是想要对ng-content
传递过来的操作可以使用它。AfterViewInit
是把组件、子组件的的其他内容初始化完成调用。如果想对页面操作可以使用它。==不可以在AfterContentInit、AfterViewInit生命周期里去改变父组件的值!==
The text was updated successfully, but these errors were encountered: