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