使用日期管道

时间:2017-02-06 21:12:20

标签: date angular data-binding ionic2

我使用日期对象来跟踪应用程序中的当前日期。

在我看来,我有这样的单向绑定:

<h3>{{ currentDate | date }}</h3>

在组件中,我有更改此日期的功能,如下所示:

previousMonth(){
   this.currentDate.setMonth(this.currentDate.getMonth() - 1);
}

nextMonth(){
   this.currentDate.setMonth(this.currentDate.getMonth() + 1);
}

但是当触发这些功能时,currentDate值不会在视图上更新。

我确保日期对象正在更新,而不是在视图上。

每当我删除日期管道时,它都能正常工作。

任何人都知道如何解决这个问题?

谢谢!

1 个答案:

答案 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);
}