首页 > 解决方案 > 日期选择器未正确更新日期对象

问题描述

我正在使用https://github.com/DanielYKPan/date-time-picker找到的日期时间选择器来获取/更新日期选择器的“开始”和“结束”日期对象(参见selectedMomentsTypeScript 代码) . 但是,每当我选择一个新日期并触发该功能dateTimePickerActivate()(参见(dateTimeChange)=HTML 代码)时,我都会收到一个 TypeError(参见下面的错误 1),并且只能在隐藏对象属性中找到新日期_pendingValue(参见下面的错误 2),这不会'不更新日期对象的实际值。

如何修复这些以正确更新selectedMoments对象数组?

HTML:

<mat-form-field class="full-width">
  <input matInput placehold="Time Range (Optional):" [selectMode]="'range'" [owlDateTimeTrigger]="dateTimePicker" [owlDateTime]="dateTimePicker" [formControl]="selectedMoments" (dateTimeChange)="dateTimePickerActivate()">
  <owl-date-time showSecondsTimer="'true'" hour12Timer="'true'" #dateTimePicker></owl-date-time>
</mat-form-field>

打字稿:

// Date & Time Stored Value
// Note: Month starts at 0, so ex: February would == 1
public selectedMoments = [new Date(2018, 1, 12, 10, 30), new Date(2018, 3, 21, 20, 30)];

dateTimePickerActivate() {
  console.log(Object.getOwnPropertyNames(this.selectedMoments));
  console.log(this.selectedMoments);
}

错误:

1)html ERROR TypeError: control.registerOnChange is not a function关于(dateTimeChange)="dateTimePickerActivate()"

2)

图1 图2

标签: javascripthtmlangulartypescriptdatetime

解决方案


我找到了更新日期的解决方案(虽然有点笨拙),但是我仍然没有找到解决第一个错误的方法。

HTML:

(dateTimeChange)="dateTimePicked(dateTimePicker)"

打字稿:

dateTimePicked(selectedDate) {
  const dateRangeObject = {
    // First date
    from: selectedDate.selecteds[0],
    // Second date
    to: selectedDate.selecteds[1],
  };

  console.log(dateRangeObject);
  // do something with dates here...
}

推荐阅读