Angular 访问ngOnChanges中的最新输入属性

Angular 访问ngOnChanges中的最新输入属性,angular,angular2-directives,Angular,Angular2 Directives,官方称: “ngOnChanges是当指令的任何数据绑定属性更改时调用的生命周期挂钩。请定义ngOnChanges()方法来处理更改 有点不清楚的是,ngOnChanges lifecycle方法中是否实际提供了更新/最新的输入属性。因此,我做了一个简单的实验,如下所示: //trmplate.html <p [mydirective] = "GetFirstStudent().Name"></p> 因此,我刷新浏览器,控制台确实有以下输出: 迈克尔 因此,这证实了在n

官方称:

“ngOnChanges是当指令的任何数据绑定属性更改时调用的生命周期挂钩。请定义ngOnChanges()方法来处理更改

有点不清楚的是,ngOnChanges lifecycle方法中是否实际提供了更新/最新的输入属性。因此,我做了一个简单的实验,如下所示:

//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
 }
}