Angular 2.0中日期的双向绑定

时间:2016-01-24 10:18:36

标签: angular

我在Angular 2.0中有关于双向绑定的问题。 在我看来,我会显示所选日期(月份和年份)+当月的天数。 有按钮可以进入下个月或上个月。 但是当我点击它们时,显示的日期没有更新,但它在模型中成功更新。并且正确更新了月中的日期(使用ngFor)。 有人知道在视图中更新日期的正确方法吗?

查看:

<span>
  {{date | date:'MMMM yyyy'}}
</span>

<button (click)="goToPreviousMonth()">Previous month</button>
<button (click)="goToNextMonth()">Next month</button>

<div *ngFor="#week of weeks">
    <!-- Show days -->
</div>

组件:

import {Component} from 'angular2/core';
import {CORE_DIRECTIVES, NgModel} from 'angular2/common';

@Component({
    selector: 'monthview',
    templateUrl: './monthview.html',
    directives: [CORE_DIRECTIVES]
})
export class MonthView {
   weeks:any = [];
   date:Date;

   public goToMonthFromCurrent(addMonth:number) : void {
        // Update date
        this.date.setMonth(this.date.getMonth() + addMonth);

        // Some other code to calculate days of month... 

        // This will update the date in view
        this.date = new Date(this.date.getTime());
   }

   public goToNextMonth() : void {
        this.goToMonthFromCurrent(1);
   }

   public goToPreviousMonth() : void {
        this.goToMonthFromCurrent(-1);
   }
}

1 个答案:

答案 0 :(得分:0)

如果更改对象的属性,则角度更改检测无法识别更改。 Angular仅比较对象实例的标识。

创建一个新的Date实例,而不是更改现有的实例。