javascript - Angular material datovelger returnerer Moment-objekt i stedet for Date
Jeg har et merkelig problem, i min HTML har jeg definert-
<mat-radio-button value="embargoed">
<div>Everyone, limited by date</div>
<mat-form-field *ngIf="data.selected === 'embargoed'">
<mat-label>Available from date</mat-label>
<input matInput [matDatepicker]="picker" #input [(ngModel)]="date">
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker>
</mat-form-field>
</mat-radio-button>
i min komponent initialiserte jeg-
date = new Date();
Jeg har en OnSubmit-funksjon som gjør-
onSubmit(){
if (this.data.selected === 'embargoed') {
this.data.date = this.date;
}
}
I debug kan jeg se at this.date er et Moment-objekt i stedet for et Date-objekt, noen idé hvorfor?
Svar #1
Jeg fant grunnen. I min app.module.ts hadde jeg erklært:
{provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS}
Svar #2
Fra https://material.angular.io/components/datepicker/overview:
Typen verdier som datovelgeren forventer avhenger av typen DateAdapter som brukes i applikasjonen din. NativeDateAdapter, for eksempel, fungerer direkte med vanlige JavaScript Date-objekter. Når du derimot bruker MomentDateAdapter, vil verdiene alle være Moment.js-instansene.
Også: https://material.angular.io/components/datepicker/overview#choosing-a-date-implementation-and-date-format-settings:
Datovelgeren ble bygget for å være uavhengig av datoimplementasjon. Dette betyr at den kan gjøres i stand til å fungere med en rekke forskjellige datoimplementasjoner. Det betyr imidlertid også at utviklere må sørge for å tilby de nødvendige delene for at datovelgeren skal fungere med deres valgte implementasjon.
