[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 http://plnkr.co/edit/AHrB6opLqHDBPkt4KpdT?p=previewngOnChange 并能够让它在我的应用程序中工作。尽管我无法让 PosX 和 PosY 变量以相同的方式工作。
变量 PosX 和 PosY 每 15 秒通过我的 firebase 数据库中的可观察值更新一次。知道为什么 previousValue 没有出现吗?
我能找到的最佳答案是关于 OnChanges() 无法检测坐标更改,因为它是对坐标对象的引用,而不是实际值。
直接报价:
Hero 属性的值是对 Hero 对象的引用。 Angular 并不关心英雄自己的 name 属性发生了变化。英雄对象引用没有改变,所以从 Angular 的角度来看,没有需要报告的变化!
Link: https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html#!#onchanges https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html#!#onchanges
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)