我使用日期对象来跟踪应用程序中的当前日期。
在我看来,我有这样的单向绑定:
<h3>{{ currentDate | date }}</h3>
在组件中,我有更改此日期的功能,如下所示:
previousMonth(){
this.currentDate.setMonth(this.currentDate.getMonth() - 1);
}
nextMonth(){
this.currentDate.setMonth(this.currentDate.getMonth() + 1);
}
但是当触发这些功能时,currentDate
值不会在视图上更新。
我确保日期对象正在更新,而不是在视图上。
每当我删除日期管道时,它都能正常工作。
任何人都知道如何解决这个问题?
谢谢!
答案 0 :(得分:2)
该值未在视图中更新,因为默认情况下,angular中的管道称为 pure (或无状态)。这意味着如果输入对象发生更改,则不会重新评估输入,但只有在输入对象被替换时才会重新评估。
来自documentation(请参阅 Pure和Impure pipe 部分):
Angular仅在检测到纯粹的更改时执行纯管道 输入值。纯粹的改变是对原始输入的改变 value(String,Number,Boolean,Symbol)或更改的对象引用 (日期,数组,功能,对象)。
请尝试使用以下代码:
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);
}