1
パイプされたオブジェクトを再作成する以外は、最後に「パイプされた」値は更新されません。 この方法でタイマーを作成しているので、これは私の予想される動作ではありません。パイプされた値が更新されない
@Pipe({
name: 'fromNow'
})
export class FromNowPipe {
transform(value: any, args: Array<any>): string {
return moment(value).fromNow();
}
}
@Component({
selector: 'event-spinner',
changeDetection: ChangeDetectionStrategy.Default, // all other modes does not work at all
pipes: [FromNowPipe],
template: `
<div class="col-xs-5">
NOT updating: {{ last | fromNow }} <br/>
Updating: {{ lastText }} <br/>
</div>
`
})
export class EventSpinner implements OnInit {
last: moment.Moment;
lastText: string;
ngOnInit(): void {
this.last = moment();
let obs = Observable.interval(1000).subscribe(() => {
// this.last = moment(this.last); // uncommenting this line it updates
this.lastText = this.last.fromNow();
this.cdRef.detectChanges(); // commenting this line breaks everything
});
}
}
私はこの問題をきれいに解決するために何ができますか? つまり、lastTextなどの余分なオブジェクトを追加したり、モーメントオブジェクトを毎回自分自身からコピーすることを避けてください。
ありがとうございます!