为什么我看不到我的应用程序中记录的ngOnChanges

时间:2017-06-05 06:35:54

标签: angular lifecycle

我是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时无法看到任何日志。

我在这里弄错了吗?

1 个答案:

答案 0 :(得分:2)

ngOnChanges 只有在您的类/组件中有 @Input()参数时才会触发,它将在更新任何输入参数值时执行。

在您的代码中,您没有任何关于输入参数的内容,因此您的ngOnChanges未被记录。

可能你必须定义如下:@Input()person:any;