2016-02-02 53 views
1

假設我有Angular2。如何觀察子對象的變化?

@Input() timeData: TimeData 

部件,其中TimeData只包含一個字段:time

我要觀察timeData.time假設只有timeData.time改變(不是整個timeData

ngOnChanges不跟蹤這種變化,而{{timeData.time}}可以完美運行。

我的最終目標是把標誌goodTime

if(timeData.time % 10 === 0){ 
    goodTime = true 
} 

回答

5

你不提供有關TimeData的樣子,但是當你添加一個EventEmitter可以SUBCRIBE到變化的信息。

class TimeData { 
    _time: number; 
    get time(): number { 
    return this._time; 
    } 
    set time(value: number) { 
    this._time = number; 
    timeChange.next(number); 
    } 
    timeChange: EventEmitter<number> = new EventEmitter<number>(); 
} 

使用它像

timeData.timeChange.subscribe((value) => { doSomething(value);} 
+0

是 - 這正是我需要的。非常感謝你:-) 但是我想知道Angular2是如何做到的。 {{timeData.time}}工作,沒有額外的字段(timeChange,_time)。 –

+0

在每個更改檢測週期中檢查所有綁定。你也可以通過在你的組件中實現'doCheck()'並且比較以前的值和當前的值。 –