ngOnChanges实际上会更新输入属性吗?

时间:2019-10-31 01:39:08

标签: javascript angular

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

在Angular为所有输入设置初始值之后调用

ngOnInit() 指令已声明的属性。

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

假设我们有一个输入属性,例如:

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

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

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

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

但是在调用numOfProduct之后如何更新输入属性ngOnChanges()?是一种特殊的生命周期方法,称为ngUpdateInputProperties(名称不匹配,但您知道了),其工作方式如下:

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

或者这样的生命周期方法不存在,并且numOfProduct将没有最新值,我们只能通过ngOnChanges()方法访问最新值吗?

1 个答案:

答案 0 :(得分:0)

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

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

希望这会有所帮助。