ngOnChange 不存储 previousValue 属性
ngOnChange not storing previousValue property
[Angular2 @ RC4] [angularfire2 @ 2.0.0-beta.2]
在我的子组件中,我无法changes['posX'].previousValue
存储任何东西。
来自父级的代码段 html:
//inside *ngfor loop
[posX]='coord.position_x | calculateX:395'
[posY]='coord.position_y | calculateY:380'
来自子组件的代码段:
export class childComponent implements OnChanges {
@Input() posX: number; //updated via firebase database from parant
@Input() posY: number; //updated via firebase database from parant
ngOnChanges(changes: {[ propName: string]: SimpleChange}) {
console.log('Change detected: ', changes['posX'].currentValue);
console.log('Change detected: ', changes['posX'].previousValue);
}
来自 chrome 控制台的结果:
Change detected: posX current = 343 //changes every time
Change detected: posX previous = Object {} //same after updates
我找到了这个 plnkr 的 ngOnChange 并且能够让它在我的应用程序中运行。尽管我无法让 PosX 和 PosY 变量以相同的方式工作。
变量 PosX 和 PosY 每 15 秒通过我的 firebase 数据库中的一个 observable 进行更新。知道为什么没有显示 previousValue 吗?
我能找到的最佳答案是关于 OnChanges() 无法检测到坐标的更改,因为它是对坐标对象的引用,而不是实际值。
直接引用:
The value of the hero property is the reference to the hero object. Angular doesn't care that the hero's own name property changed. The hero object reference didn't change so, from Angular's perspective, there is no change to report!
Link: https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html#!#onchanges
[Angular2 @ RC4] [angularfire2 @ 2.0.0-beta.2]
在我的子组件中,我无法changes['posX'].previousValue
存储任何东西。
来自父级的代码段 html:
//inside *ngfor loop
[posX]='coord.position_x | calculateX:395'
[posY]='coord.position_y | calculateY:380'
来自子组件的代码段:
export class childComponent implements OnChanges {
@Input() posX: number; //updated via firebase database from parant
@Input() posY: number; //updated via firebase database from parant
ngOnChanges(changes: {[ propName: string]: SimpleChange}) {
console.log('Change detected: ', changes['posX'].currentValue);
console.log('Change detected: ', changes['posX'].previousValue);
}
来自 chrome 控制台的结果:
Change detected: posX current = 343 //changes every time
Change detected: posX previous = Object {} //same after updates
我找到了这个 plnkr 的 ngOnChange 并且能够让它在我的应用程序中运行。尽管我无法让 PosX 和 PosY 变量以相同的方式工作。
变量 PosX 和 PosY 每 15 秒通过我的 firebase 数据库中的一个 observable 进行更新。知道为什么没有显示 previousValue 吗?
我能找到的最佳答案是关于 OnChanges() 无法检测到坐标的更改,因为它是对坐标对象的引用,而不是实际值。
直接引用:
The value of the hero property is the reference to the hero object. Angular doesn't care that the hero's own name property changed. The hero object reference didn't change so, from Angular's perspective, there is no change to report!
Link: https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html#!#onchanges