2016-07-11 3 views
0

[Angular2 @ RC4] [angularfire2 @ 2.0.0-beta.2]ngOnChange не сохраняет PreviousValue свойство

Внутри моего ребенка компонента я не могу получить 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); 
    } 

Результат из хромированной консоли:

Change detected: posX current = 343 //changes every time 
Change detected: posX previous = Object {} //same after updates 

Я нашел этот plnkr из ngOnChange и смог заставить его работать в моем приложении. Хотя я не могу заставить переменные PosX и PosY работать одинаково.

Переменные PosX и PosY обновляются через наблюдаемую из базы данных firebase каждые 15 секунд. Любая идея, почему previousValue не появляется?

+0

Я вижу предыдущее значение в консоли, выполнив 'изменения [«myProp»] previousValue' –

+0

К сожалению, я буду править мой вопрос, чтобы прояснить это немного лучше.. Я могу заставить plnkr работать так же, как получить пример от плункера, работающего над моим проектом, но по какой-то причине переменные PosX/PosY не обновляются так же, как переменная изменения в примере. –

+0

Что вы подразумеваете под «переменными PosX/PosY, которые не обновляются так же, как переменная изменения в примере». Что такое 'currentValue', должно быть, так или иначе? –

ответ

0

Лучший ответ, который я мог найти, - это то, что OnChanges() не может обнаружить изменения в координатах, потому что это ссылка на объект-координатор, а не фактическое значение.

Direct Цитата:

Значение свойства героя является ссылка на объект героя. Угловой не волнует, что собственное имя героя изменилось. Ссылка на объект героя не изменилась, поэтому, с точки зрения Angular, изменений не сообщается!

Ссылка: https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html#!#onchanges

Смежные вопросы