当 Input 属性发生变化时,Angular 不会调用变化检测。我已经读过,除非绑定发生变化,否则 Angular 不会调用 onChanges,但在此示例中,我已将输入绑定到 ng datePicker 模型,但仍然没有调用 ngOnChanges。
下面是附加的 stackBlitz 示例: https ://stackblitz.com/edit/angular-zvpice
当 Input 属性发生变化时,Angular 不会调用变化检测。我已经读过,除非绑定发生变化,否则 Angular 不会调用 onChanges,但在此示例中,我已将输入绑定到 ng datePicker 模型,但仍然没有调用 ngOnChanges。
下面是附加的 stackBlitz 示例: https ://stackblitz.com/edit/angular-zvpice
如果您在父组件中更改它,那么 ngOnChanges 会在子组件中调用。
以此进行测试,在 parent.ts 中添加 ngOnInit,如下所示,其余代码保持原样:
ngOnInit() {
setTimeout(() => {
this.minDate = {year: 2019, month: 4, day: 4};
}, 3000)
}
或查看此闪电战https://stackblitz.com/edit/angular-zvpice-slhbxd
在孩子中更改 minDate 不会调用ngOnChanges
它没有被调用,因为子组件本身正在改变它的内部属性。当实际绑定到该输入属性的某些父组件将更改该输入时,将调用它。
我已经编辑了您的演示并将按钮及其单击处理程序移至父组件。现在,当您单击并更改绑定时,将调用 onChanges 回调。