Comment détecter les changements avec les objects Date dans Angular2?

Les objects date qui sont modifiés à l’aide de la méthode setDate ne sont pas mis à jour dans le modèle.

Dans le modèle:

{{date | date:'mediumDate'}}

En composant:

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

Mais lorsque j’appelle la fonction nextDay, le modèle n’est pas mis à jour avec la nouvelle valeur.

La seule façon pour que la détection du changement fonctionne est la suivante:

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

Existe-t-il un meilleur moyen d’accomplir cette même tâche?

Je pense que c’est la bonne façon de changer la référence de la variable de date. De la documentation ici nous avons:

L’algorithme de détection de changement par défaut recherche les différences en comparant les valeurs de propriété liée par référence entre les exécutions de détection de changement.

Donc, si la référence de la date rest la même, rien ne se passera. Vous avez besoin d’une nouvelle référence Date et c’est pourquoi la deuxième version de nextDay() fonctionne.

Si vous supprimez le tuyau de formatage, vous verrez que seule la deuxième version de nextDay() fonctionne.