如何在Angular2中使用Date对象检测更改

如何在Angular2中使用Date对象检测更改

本文介绍了如何在Angular2中使用Date对象检测更改?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用setDate方法修改的日期对象未在模板中更新。

Date objects that are modified using setDate method arent getting updated in template.

在模板中:

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

在组件中:

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

但是当我调用nextDay函数时,模板没有使用新值更新。

But when I call nextDay function, the template isnt updated with the new value.

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

The only way I could get the change detection working was doing this:

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

有没有更好的方法来完成同样的任务?

Are there a better way to accomplish this same task?

推荐答案

我认为这是改变日期变量引用的正确方法。从文档我们有:

I think that is the right way, to change the reference of the date variable. From the docs here we have:

因此,如果日期参考保持不变,则不会发生任何事情。您需要一个新的日期参考,这就是 nextDay()的第二个版本的原因。

So if the date reference remains the same, nothing will happen. You need a new Date reference and that's why the second version of nextDay() works.

如果删除格式化管道,您将看到仍然只有第二个版本的 nextDay()有效。

If you remove the formatting pipe you will see that still only the second version of nextDay() works.

这篇关于如何在Angular2中使用Date对象检测更改?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 04:15