<input
[value]="question.timestampToMoment(row.controls[column.name].value)"
[formControlName]="column.name"
[required]="column.required"
matInput
[matDatepicker]="picker"
(dateChange)="question.onDateChange($event)"
placeholder="Choose a date"
/>
我希望附加到此datepicker
的FormControl
具有时间戳为值,以便可以将时间戳发送回后端。然后,在值从后端返回时设置此datepicker
的值时,我需要从时间戳将其转换回moment
对象。
我想timestampToMoment
看起来像:return moment(value * 1000)
我无法弄清楚如何实现onDateChange
或任何其他方法来完成此工作。datepicker
使用moment.js
。
如 @eliseo的评论中所述,这里的诀窍是不要在datepicker
输入中包括FormControl
,并使用dateChange
事件手动更改FormControl
的值。datepicker
的value
可以通过将时间戳传递到功能中来设置。
<input
[value]="timestampToMoment(form.controls[key].value)"
[required]="required"
matInput
[matDatepicker]="picker"
(dateChange)="onDateChange($event, form.controls[key])"
placeholder="Choose a date"
/>
timestampToMoment(value: number): Moment {
return moment(value * 1000);
}
onDateChange(event: MatDatepickerInputEvent<any>, control: AbstractControl): void {
control.setValue(event.value.valueOf() / 1000);
}