Пример проблемы: http://plnkr.co/edit/7FeRoyyqDnj
import {Component, NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
@Component({
selector: 'my-app',
template: `
<div>
<h2>{{myDate}}</h2> <!-- THIS UPDATES AS EXPECTED -->
<h2>{{myDate | date: 'longDate'}}</h2> <!-- THIS DOES NOT -->
<a (click)="prevMonth()" href="javascript:;">Previous Month</a>
<a (click)="nextMonth()" href="javascript:;">Next Month</a>
</div>
`,
})
export class App {
myDate: Date;
constructor() {
this.myDate = new Date();
}
nextMonth() {
this.myDate.setMonth(this.myDate.getMonth() + 1);
}
prevMonth() {
this.myDate.setMonth(this.myDate.getMonth() - 1);
}
}
@NgModule({
imports: [ BrowserModule ],
declarations: [ App ],
bootstrap: [ App ]
})
export class AppModule {}
Когда я передаю свою переменную без использования каналов, она обновляется, как и ожидалось. Но копия той же переменной в формате DatePipe не обновляется. Пайп обновляется только для наблюдаемых? Или я могу использовать это со стандартным типом даты и ожидать, что он будет обновляться в реальном времени?
Я не вижу в API DatePipe ничего, что предлагало бы это как ожидаемое поведение, но я сузил его до точки, когда только DatePipe мог бы таким образом влиять на поведение. https://angular.io/docs/ts/latest/api/common/index/DatePipe-pipe.html