我是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()
方法访问最新值吗?
答案 0 :(得分:0)
如果更改组件中的任何值,它将更改检测以重新检查所有数据绑定值,然后它将任何更新传递给子组件。
您可以通过在getProducts()方法中放置一个日志条目,然后在子组件中跟踪其值来自己进行测试。您会注意到组件中发生更新时会调用它,并且您应该在子组件中看到更新。
希望这会有所帮助。