我正在使用日期对象来跟踪应用程序中的当前日期。
在我看来,我有一个这样的单向绑定:
<h3>{{ currentDate | date }}</h3>
在组件中,我有更改此日期的函数,如下所示:
previousMonth(){
this.currentDate.setMonth(this.currentDate.getMonth() - 1);
}
nextMonth(){
this.currentDate.setMonth(this.currentDate.getMonth() + 1);
}
但是,当触发这些函数时,视图上的currentDate
值不会更新。
我确保日期对象正在更新,只是不在视图上。
每当我删除日期管道时,它都可以工作。
有人知道如何解决这个问题吗?
谢谢!
该值在视图中不会更新,因为默认情况下,角度中的管道是纯的(或无状态的(。这意味着,如果输入对象发生更改,则不会重新评估输入,而只会在替换输入时重新评估输入。
从文档中(请参阅纯管道和不纯管道部分(:
Angular 仅在检测到纯管道的纯更改时才执行 输入值。纯更改是对基元输入的更改 值(字符串、数字、布尔值、符号(或更改的对象引用 (日期、数组、函数、对象(。
请改为尝试以下代码:
previousMonth(){
this.currentDate.setMonth(this.currentDate.getMonth() - 1);
this.currentDate = new Date(this.currentDate);
}
nextMonth(){
this.currentDate.setMonth(this.currentDate.getMonth() + 1);
this.currentDate = new Date(this.currentDate);
}