Angular官方文档说:
“ ngOnChanges是生命周期挂钩,当指令的任何数据绑定属性发生更改时都会调用它。定义ngOnChanges()方法来处理更改。
尚不清楚是否意味着ngOnChanges生命周期方法中是否实际提供了update / latest输入属性。所以我做了一个简单的实验:
//trmplate.html
<p [mydirective] = "GetFirstStudent().Name"></p>
其中Name是组件中的属性,我将第一个人的名字设置为“ Michael”。
因此在指令类中作为mydirective
选择器:
@Directive({
selector: "[mydirective]"
})
export class CustomDirective{
...
@Input("mydirective")
personName: string;
ngOnChanges() {
console.log(personName);
}
}
所以我刷新浏览器,控制台确实显示以下输出:
迈克尔
因此,这证实了我可以在ngOnChanges中访问最新的输入属性。
我的理解正确吗?
答案 0 :(得分:1)
您可以在这里StackBlitz Link
找到工作示例ngOnChanges(change: SimpleChanges){
console.log(change['valueFromParent']);
if (change['valueFromParent'].currentValue === undefined ){
this.currentStatus = 'Not Change Detected';
}
else if(change['valueFromParent'].currentValue === true){
this.currentStatus = change['valueFromParent'].currentValue
}
else if( change['valueFromParent'].currentValue === false) {
this.currentStatus = change['valueFromParent'].currentValue
}
}
答案 1 :(得分:0)
赞:
ngOnChanges(changes: SimpleChanges) {
console.log(changes.personName);
if (changes.personName)
console.log(changes.personName.currentValue)
}
答案 2 :(得分:0)
您的实现适用于字符串和整数,因为它们是通过值传递的,而不适用于数组和对象输入,因为它们是通过引用传递的。
SimpleChanges参数用于获取输入属性的新值和先前值
[HttpPost]
public JsonResult MassDelete(int[] selectedIds)
{
return Json(new { success = true });
}