2016-01-15 9 views
7

SetDate yöntemini kullanarak değiştirilen tarih nesneleri, şablonda güncellenir. şablonundaAngular2'deki Tarih nesneleriyle değişiklikler nasıl algılanır?

:

<p>{{date | date:'mediumDate'}}</p> 

bileşeninde:

nextDay(){ 
    this.date.setDate(this.date.getDate()+1); 
    } 

Ama nextDay işlevini yeni bir değerle güncellenen şablon isnt çağırdığınızda. Ben değişim algılama alabilir

tek yolu bu yaptığını çalışan:

nextDay(){ 
    var tomorrow = new Date(); 
    tomorrow.setDate(this.date.getDate()+1); 
    this.date = tomorrow; 
    } 

bu aynı görevi gerçekleştirmek için daha iyi bir yolu var mıdır?

+2

'Tarih 'borusu muhtemelen vatansız, yani' date 'giriş özelliği değişikliğini görmesi gerekiyor, yoksa boru yeniden çalışmayacak. Jhadesdev'in cevabında bahsettiği gibi, “date” bir obje olduğundan ve sadece referans referansları açısal olduğundan, referansı (yeni/farklı bir nesneye) sıfırlamanız gerekir. –

+1

Şimdi boru olmadan bir atış yaptım ve aynı sonucu. Şablon değişikliğini tetiklemeyeceği tarihi değiştirirseniz, yalnızca bir referans değişikliği bir şablon değişikliğini tetikler –

cevap

5

Tarih değişkeninin başvurusunu değiştirmek için doğru yol olduğunu düşünüyorum. docs here itibaren biz var:

varsayılan değişim algılama algoritması değişim algılama çalışır genelinde referans olarak bağlı-özellik değerlerini karşılaştırarak farklılıkları arar.

Yani tarih referansı aynı kalırsa, hiçbir şey olmaz

. Yeni bir Tarih referansına ihtiyacınız var ve bu yüzden nextDay()'un ikinci sürümü çalışıyor.

biçimlendirme borusunu kaldırırsanız, nextDay() eser hala sadece ikinci versiyonunu göreceksiniz.

+0

Sürüm, dokümanlar bağlantısı bozuldu –