Angular Material 10 范围 datepicker 和 moment.js 错误:date.getFullYear 不是函数

Bjö*_*rth 5 javascript momentjs angular-material angular

尝试使用 moment.js 的 rangePicker 选项来实现 Angular Material v10 datepicker 但是当我将 moment 与 rangePicker 结合使用时,它给了我这个错误。

Error: date.getFullYear is not a function

当我尝试选择第二个日期时发生此错误matEndDate

修改后的 Google Stackblitz 示例显示错误:

https://stackblitz.com/edit/angular-imb7gg?file=src/app/datepicker-moment-example.ts

yur*_*zui 4

范围日期选择器使用错误的范围策略DateAdapter

为了修复它,您应该在提供 custom 的同一级别MAT_DATE_RANGE_SELECTION_STRATEGY提供令牌:DateAdapter

import {
  MAT_DATE_RANGE_SELECTION_STRATEGY,
  DefaultMatCalendarRangeStrategy
} from '@angular/material/datepicker';
...
providers: [
 { provide: MAT_DATE_RANGE_SELECTION_STRATEGY, useClass: DefaultMatCalendarRangeStrategy},
 { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]},
 ....
Run Code Online (Sandbox Code Playgroud)

它确保该类DefaultMatCalendarRangeStrategy将 MomentDateAdapter 作为DateAdapter实现而不是NativeDateAdapter

叉式堆栈闪电战

  • 工作起来就像一个魅力,我看到了 NativeDateAdapter 错误,但我只是假设 MomentDateAdapter 继承了或者其他什么。 (2认同)