如何检测Angular2中Date对象的变化?

使用setDate方法修改的date对象不会在模板中更新。

在模板中:

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

在组件中:

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

但是当我调用nextDay函数时,模板不会更新为新的值。

唯一能让变化检测工作的方法就是这样做:

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

有没有更好的方法来完成这个相同的任务?

我认为这是正确的方法,改变datevariables的引用。 从这里的文档我们有:

默认的更改检测algorithm通过在更改检测运行之间通过引用比较绑定属性值来查找差异。

所以如果date参考保持不变,什么都不会发生。 你需要一个新的date参考,这就是为什么nextDay()的第二个版本工作。

如果您删除格式化pipe道,您将会看到仍然只有nextDay()的第二个版本起作用。