2017-05-22 1 views
1

Ceci est mon code dans .ts fichier Tapuscrit:propriété Mise à jour en classe ne met pas à jour la propriété en vue

private today: Date = new Date(); 

ce qui est mon html

<span [innerText]="today | date:dateFormat"></span> 

Cela montre le 22 mai parfaitement

maintenant j'ai un bouton pour soustraire un jour de celui-ci:

previousDay() { 
     Utils.addDays(this.today, -1); 
     console.log(this.today); 
    } 

Le this.today enregistre correctement le 21 mai dans la console mais ma vue reste au 22 mai.

Voici le Plunk que j'ai créé: https://plnkr.co/edit/6hw1JW0h5zNvF0owcU9U?p=preview

Qu'est-ce que je manque?

Répondre

3

Mettez à jour votre fonction previousDay comme ci-dessous selon plunker:

previousDay() { 
this.today = new Date(this.today.setDate(this.today.getDate() - 1)) 
console.log(this.today); 
} 

Hope it helps!

+0

Merci, mais c'est un hack en créant de nouveaux objets à chaque fois. Je veux garder le même objet. Si les propriétés sont mises à jour, la vue ne se met-elle pas à jour elle-même? –

+0

@TimLiberty, c'est la méthode correcte pour la liaison bidirectionnelle dans angular2 pour les objets de date. Les objets Date sont différents des autres objets.Veuillez vérifier https://stackoverflow.com/questions/34819057/how-to-detect-changes-with-date-objects-in-angular2 –

+1

Cool. Merci pour la référence :) –