typescript - ngOnChange sparar inte egenskapen previousValue
[Angular2 @ RC4] [angularfire2 @ 2.0.0-beta.2]
Inuti min barnkomponent kan jag inte få changes['posX'].previousValue att lagra något.
Utdrag från föräldra-html:
//inside *ngfor loop
[posX]='coord.position_x | calculateX:395'
[posY]='coord.position_y | calculateY:380'
Utdrag från Child-komponenten:
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);
}
Resultat från Chrome-konsolen :
Change detected: posX current = 343 //changes every time
Change detected: posX previous = Object {} //same after updates
Jag hittade denna plnkr av ngOnChange och kunde få den att fungera i min app. Även om jag inte kan få PosX- och PosY-variablerna att fungera på samma sätt.
Variablerna PosX och PosY uppdateras via ett observerbart från min Firebase-databas var 15:e sekund. Någon idé om varför previousValue inte visas?
Svar #1
Det bästa svaret jag kunde hitta var om att OnChanges() inte kan upptäcka ändringar i coord eftersom det är en referens till coord-objektet och inte det faktiska värdet.
Direkt citat:
Värdet på hero-egenskapen är referensen till hero-objektet. Angular bryr sig inte om att hero:s egen name-egenskap ändrades. Hero-objektreferensen ändrades inte, så ur Angularts perspektiv finns det ingen förändring att rapportera!
Länk: https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html#!#onchanges