【问题标题】:does ngOnChanges actually update input propertiesngOnChanges 是否真的更新了输入属性
【发布时间】:2019-10-31 01:39:08
【问题描述】:

我是 Angular 的新手,只是一个关于生命周期挂钩方法的问题。我知道:

ngOnInit() 在 Angular 为所有输入设置初始值后调用 指令声明的属性。

ngOnChanges() 在输入属性的值发生更改时调用,并且在调用 ngOnInit 方法之前调用。

假设我们有一个像这样的输入属性:

 // custom directive class
 @Input("pa-attr")
    numOfProduct: number;

//template.html
<tr [pa-attr]="getProducts().length ...

然后我点击添加按钮并添加了一个新产品,所以产品总数发生了变化,所以我的问题是:

在我的情况下,ngOnChanges() 被调用,ngOnInit() 不会被调用,因为 ngOnInit() 仅在第一次使用值初始化输入属性时被调用。

但是在调用ngOnChanges() 之后,输入属性numOfProduct 是如何更新的呢?是不是一个特殊的生命周期方法称为ngUpdateInputProperties(名称不匹配,但你明白了)的作用是:

ngUpdateInputProperties {
  latestValue = ... //retrieve latest value
  numOfProduct = latestValue ;
}

或者这样的生命周期方法不存在并且numOfProduct没有最新值,我们只能在ngOnChanges()方法中获取最新值?

【问题讨论】:

    标签: javascript angular


    【解决方案1】:

    如果您更改组件中的任何值,它将更改检测以重新检查所有数据绑定值,然后它将任何更新传递给您的子组件。

    您可以通过在 getProducts() 方法中放置一个日志条目来自行测试,然后在子组件中跟踪它的值。您会注意到它在组件中发生更新时被调用,并且您应该在子组件中看到更新。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-03-04
      • 2016-04-06
      • 1970-01-01
      • 2017-03-16
      • 2017-12-12
      • 2015-03-25
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多