Angular 访问ngOnChanges中的最新输入属性
官方称: “ngOnChanges是当指令的任何数据绑定属性更改时调用的生命周期挂钩。请定义ngOnChanges()方法来处理更改 有点不清楚的是,ngOnChanges lifecycle方法中是否实际提供了更新/最新的输入属性。因此,我做了一个简单的实验,如下所示:Angular 访问ngOnChanges中的最新输入属性,angular,angular2-directives,Angular,Angular2 Directives,官方称: “ngOnChanges是当指令的任何数据绑定属性更改时调用的生命周期挂钩。请定义ngOnChanges()方法来处理更改 有点不清楚的是,ngOnChanges lifecycle方法中是否实际提供了更新/最新的输入属性。因此,我做了一个简单的实验,如下所示: //trmplate.html <p [mydirective] = "GetFirstStudent().Name"></p> 因此,我刷新浏览器,控制台确实有以下输出: 迈克尔 因此,这证实了在n
//trmplate.html
<p [mydirective] = "GetFirstStudent().Name"></p>
因此,我刷新浏览器,控制台确实有以下输出:
迈克尔
因此,这证实了在ngOnChanges中,我可以访问最新的输入属性
我的理解正确吗?像这样:
ngOnChanges(changes: SimpleChanges) {
console.log(changes.personName);
if (changes.personName)
console.log(changes.personName.currentValue)
}
您的实现对于字符串和整数很有效,因为它们是通过值传递的,而对于数组和对象输入则不行,因为它们是通过引用传递的 SimpleChanges参数用于获取输入属性的新值和以前的值
ngOnChanges(changes: SimpleChanges) {
for (let propName in changes) {
let change = changes[propName];
let curVal = change.currentValue;
let prevVal = change.previousValue;
console.log(curVal);
console.log(prevVal);
}
}
您可以在这里找到工作示例
您是否询问
ngOnChanges
是否有效?如果有效,答案是肯定的。使用ngOnChanges(更改:SimpleChanges)
changes.personName.currentValue
将存储当前值您的问题到底是什么?您基本上通过证明最新值实际上是Michael
来回答了您自己的问题,因此我不确定您在这里寻找的是什么。
ngOnChanges(changes: SimpleChanges) {
for (let propName in changes) {
let change = changes[propName];
let curVal = change.currentValue;
let prevVal = change.previousValue;
console.log(curVal);
console.log(prevVal);
}
}
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
}
}