2016-01-24 2 views
1

У меня вопрос о двухстороннем связывании в Angular 2.0. На мой взгляд, я показываю выбранную дату (месяц и год) + дни месяца. Есть кнопки для перехода к следующему или предыдущему месяцу. Но когда я нажимаю на них, дата показа не обновляется, но она успешно обновляется в модели. И дни месяца обновляются правильно (с ngFor). Кто-нибудь знает правильный способ обновления даты в представлении?Двусторонняя привязка даты в Угловом 2.0

Вид:

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

ответ

0

Если изменить свойство в обнаружении изменений объекта не углам главного распознать изменения. Угловая только сравнивает идентичность экземпляра объекта.

Создайте новый экземпляр Date вместо того, чтобы изменять его.

+0

Спасибо. 'this.date = new Date (this.date.getTime());' действительно было решением (обновленное решение, о котором идет речь). Каким будет решение с уведомлением об изменении? – user2276975