我是Angular的新手,我正试图抓住生命周期钩子。但是,我很困惑,因为我在代码中看到的内容并不符合文档。
我的组件类中有以下代码:
ngOnInit() {
console.log("ngOnInit", this.personList);
this.person = this.pService.getName();
}
ngOnChanges() {
console.log("ngOnChanges", this.personList, arguments);
}
ngDoCheck() {
console.log("ngDoCheck", this.personList, arguments);
}
ngAfterContentInit() {
console.log("ngAfterContentInit", this.personList, arguments);
}
ngAfterViewInit() {
console.log("ngAfterViewInit", this.personList, arguments);
}
ngAfterViewChecked() {
console.log("ngAfterViewChecked", this.personList, arguments);
}
ngAfterContentChecked() {
console.log("ngAfterContentChecked", this.personList, arguments);
}
ngOnDestroy() {
console.log("ngOnDestroy", this.personList, arguments);
}
changeclr() {
this.person = this.name === 'Saurabh' ? 'Navanshu' : 'Saurabh';
}
这里的docs表示ngOnchanges
会在ngonInit
之前触发,但在应用程序加载时我无法看到ngOnChanges
的任何日志。
文档还说ngOnChnages
在数据绑定属性更改时运行。它是否特定于使用@Input
设置的属性,因为我在使用this.person
方法更改changclr
时无法看到任何日志。
我在这里弄错了吗?
答案 0 :(得分:2)
ngOnChanges 只有在您的类/组件中有 @Input()参数时才会触发,它将在更新任何输入参数值时执行。
在您的代码中,您没有任何关于输入参数的内容,因此您的ngOnChanges未被记录。
可能你必须定义如下:@Input()person:any;