Angular Material 10 range datepicker e moment.js Errore: date.getFullYear non è una funzione

Aug 27 2020

Cercando di implementare Angular Material v10 datepicker con l'opzione rangePicker con moment.js Ma quando uso moment in combinazione con rangePicker mi dà questo errore.

Error: date.getFullYear is not a function

Questo errore si verifica quando provo a selezionare la seconda datamatEndDate

Esempio di Google Stackblitz modificato che mostra l'errore:

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

Risposte

4 yurzui Aug 27 2020 at 18:17

Il selettore di date dell'intervallo utilizza la strategia dell'intervallo con DateAdapter.

Per risolverlo dovresti fornire MAT_DATE_RANGE_SELECTION_STRATEGYil token allo stesso livello in cui hai fornito personalizzato 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]},
 ....

Si assicura che DefaultMatCalendarRangeStrategyla classe ottenga MomentDateAdapter come DateAdapterimplementazione invece diNativeDateAdapter

Stackblitz biforcuto