【问题标题】:Angular ngOnChanges does not get calledAngular ngOnChanges 不会被调用
【发布时间】:2019-03-01 13:12:57
【问题描述】:

当 Input 属性发生变化时,Angular 不会调用变化检测。我已经读过,除非绑定发生变化,否则 Angular 不会调用 onChanges,但在此示例中,我已将输入绑定到 ng datePicker 模型,但仍然没有调用 ngOnChanges。

下面是附加的 stackBlitz 示例: https://stackblitz.com/edit/angular-zvpice

【问题讨论】:

  • 请将代码作为格式化文本发布在这里,而不是在链接后面。

标签: angular ngonchanges


【解决方案1】:

如果您在父组件中更改它,那么 ngOnChanges 会在子组件中调用。

用这个测试,在parent.ts中添加ngOnInit如下,其余代码保持原样:

ngOnInit() {
  setTimeout(() => {
    this.minDate = {year: 2019, month: 4, day: 4};
  }, 3000)
}

或查看此闪电战https://stackblitz.com/edit/angular-zvpice-slhbxd

在孩子中更改 minDate 不会调用ngOnChanges

【讨论】:

  • 在重新渲染时不应该也被孩子调用吗?
  • ngOnChanges 在父级中的@Input 绑定值更改时在子级中调用。
【解决方案2】:

它没有被调用,因为子组件本身正在改变它的内部属性。当实际绑定到该输入属性的某些父组件更改该输入时,将调用它。

我有edited your demo 并将按钮及其点击处理程序移至父组件。现在,当您单击并更改绑定时,将调用 onChanges 回调。

【讨论】:

    猜你喜欢
    • 2023-02-22
    • 2018-09-17
    • 1970-01-01
    • 2017-09-30
    • 2020-04-02
    • 2018-06-13
    • 2022-01-18
    • 2018-06-21
    • 2019-12-16
    相关资源
    最近更新 更多