我得到一个“value”应该是一个有效的JavaScript日期实例。”尝试绑定到日期选择器或时间选择器组件的Kendo UI时出错。
There is a page in the Kendo Docs
这就谈到了如何处理这种情况,但我没有把它应用到我的情况。
我正在从服务器接收数据并放入typescript对象:
export interface Event {
id: number;
name: string;
date: Date;
startTime: Date;
endTime?: Date;
}
调试typescript对象时,这些值最终如下所示:
id:1
name:"Event 1"
date:"2018-11-01T00:00:00"
startTime:"2018-11-01T08:30:00"
endTime:"2018-11-01T10:30:00"
ngOnInit() {
if (!(this.route.snapshot.url[0].path === 'new')) {
this.isUpdating = true;
this.route.data
.subscribe((data: { event: Event }) => {
this.event = data.event;
});
}
}
public handleChange(value: Date) {
this.event.startTime = new Date(this.intl.formatDate(value, 'yyyy-MM-dd HH:mm:ss'));
this.event.endTime = new Date(this.intl.formatDate(value, 'yyyy-MM-dd HH:mm:ss'));
this.event.date = new Date(this.intl.formatDate(value, 'yyyy-MM-dd HH:mm:ss'));
}
private parse(json) {
Object.keys(json).map(key => {
const date = new Date(json[key]);
if (!isNaN(date.getTime())) { json[key] = date; }
});
return json;
}
下面是我的组件在.html中的外观:
<kendo-datepicker [(value)]="event.date" id="date" name="date" style="width: 100%;" (valueChange)="handleChange($event)"></kendo-datepicker>
<kendo-timepicker [(value)]="event.startTime" id="startTime" name="startTime" style="width: 100%;" (valueChange)="handleChange($event)"></kendo-timepicker>
<kendo-timepicker [(value)]="event.endTime" id="endTime" name="endTime" style="width: 100%;" (valueChange)="handleChange($event)"></kendo-timepicker>