2016-07-11 4 views
0

[Angular2 @ RC4] [angularfire2 2.0.0-beta.2 @] 내 아이 컴퍼넌트 내부ngOnChange PREVIOUSVALUE 속성을 저장하지

난 아무것도 저장 changes['posX'].previousValue을 얻을 수 없습니다. 크롬 콘솔에서

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); 
    } 

결과 : 하위 구성 요소에서

//inside *ngfor loop 
[posX]='coord.position_x | calculateX:395' 
[posY]='coord.position_y | calculateY:380' 

발췌문 :

부모 HTML에서

발췌문

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

내가 ngOnChange이 plnkr을 발견 할 수 있었다 그것을 내 애플 리케이션에서 작동 시키십시오. PosX와 PosY 변수는 같은 방식으로 작동하지 못합니다.

변수 PosX와 PosY는 내 firebase 데이터베이스의 관찰 가능 항목을 통해 15 초마다 업데이트됩니다. 왜 previousValue가 나타나지 않는지 아십니까?

+0

내가'변화 [ 'myProp'] previousValue'가 –

+0

미안 해요, 난 내 질문이 조금 더 명확하게 편집 할 수 있습니다 수행하여 콘솔에서 이전 값을 볼 수 있습니다. 나는 plnkr을 작동시킬뿐만 아니라 내 프로젝트에서 일하는 plunker로부터 예제를 얻는다. 그러나 어떤 이유로 PosX/PosY 변수가 예제의 변경 변수와 동일하게 업데이트되지 않는다. –

+0

"PosX/PosY 변수가 예제의 변경 변수와 동일하게 업데이트되지 않습니다."란 무엇을 의미합니까? 'currentValue'는 어쨌든 있어야 할 부분이 무엇입니까? –

답변

0

가장 좋은 답변은 OnChanges()가 coord 객체에 대한 참조이며 실제 값이 아니기 때문에 coord에 대한 변경 사항을 감지 할 수 없다는 것입니다.

직접 견적 :

영웅 속성 값 주인공 오브젝트에 대한 참조이다. Angular는 영웅 자신의 이름 속성이 바뀌어도 상관하지 않습니다. 영웅 개체 참조가 변경되지 않았으므로 Angular의 관점에서보고 할 변경 사항이 없습니다!

링크 :. https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html#!#onchanges