@angular-material-components/datetime-picker 不适用于字符串格式日期

@angular-material-components/datetime-picker does not work with string format date

我刚安装:"@angular-material-components/datetime-picker": "^5.0.3",

我导入了:

    import { NgxMatDatetimePickerModule, NgxMatNativeDateModule, NgxMatTimepickerModule } from '@angular-material-components/datetime-picker';

HTML:

    <ngx-mat-timepicker [(ngModel)]="dateString" showSeconds="true" name="dateString"></ngx-mat-timepicker>

组件:

    dateString = new Date().toString(); // this is example value comes from server in string format

我遇到错误:

    ERROR Error: Uncaught (in promise): TypeError: date.getHours is not a function
    TypeError: date.getHours is not a function
        at NgxMatNativeDateAdapter.getHour (angular-material-components-datetime-picker.js:6409)
        at NgxMatTimepickerComponent._updateHourMinuteSecond (angular-material-components-datetime-picker.js:3870)
        at NgxMatTimepickerComponent.writeValue (angular-material-components-datetime-picker.js:3808)
        at forms.js:2389
    ...

如何设置时间选择器以使用字符串日期?原始 material 日期组件可以很好地处理字符串格式,如果我使用日期格式,这个组件也可以正常工作,但我需要它来处理字符串格式 ?

根据他们的源代码,他们只需要 Date 类型,并且他们明确使用 NgxMatDateAdapter<Date> 到 parse/format NgxMatNativeDateAdapter 中的 Date 对象。

例如,您可以在此处检查需要 Date 作为参数类型的 getHour 函数:NgxMatNativeDateAdapter:284

对于您的情况,您可以根据要使用的 DateAdapter 执行以下操作:

  • NgxMatNativeDateAdapter:始终使用 new Date(value) 包装值以处理 stringDate 值。
  • NgxMatMomentAdapter:始终使用 moment(value) 包装值以处理 stringDate 值。