@Input 更改时重新初始化

buc*_*aci 0 angularjs typescript angular

当组件输入更改时,是否可以告诉 Angular 运行 init (或任何其他生命周期函数或函数),或者我必须从父组件调用该函数而不是更改输入?

感谢您的回答!

mic*_*yks 5

当组件的输入发生变化时,ngOnChanges生命周期钩子就会运行。lifecycle hook or/and any function在那里您可以根据需要呼叫任何其他人。

ngOnChanges(...args: any[]) {

    console.log('onChange fired');            
    this.ngOnInit();
}

ngOnInit()
{
    console.log('ngOnInit fired');
}
Run Code Online (Sandbox Code Playgroud)

编辑
出于某种原因,如果您想ngOnInit从父级调用子级,则可以使用ViewChild如下所示的方法。

export class Parent{

   @ViewChild(child) vc:child;

    ngAfterViewInit()
    { 
      console.log("ngAfterInit");
      console.log(this.vc.ngOnInit());
    }

};

export class child{

   ngOnInit()
    {
        console.log('ngOnInit fired');
    }
};
Run Code Online (Sandbox Code Playgroud)