Я использую matDatePicker
таким образом:
<mat-form-field class="col">
<input #pickerDal matInput [matDatepicker]="pickerDal" placeholder="Dal"
(dateChange)="fromDate('change', $event)" formControlName="formDataDal">
<mat-datepicker-toggle matSuffix [for]="pickerDal"></mat-datepicker-toggle>
<mat-datepicker #pickerDal></mat-datepicker>
</mat-form-field>
и в моем .ts я объявил:
formDataDal: new FormControl()
, он работал правильно, пока я не решилдобавить отображаемое значение по умолчанию в окне выбора даты.Я добавил [(ngModel)]="dal_default"
внутри тега input
и в файл .ts и инициализировал dal_default
:
this.dal_default = new Date();
Теперь, если я попытаюсь напечатать значение Date, используя formControlName или этотdal_default
переменная, я получаю странную строку формата.В частности, если я печатаю отображаемую дату по умолчанию, она правильно печатается как дата, но затем, если я изменяю дату, я получаю строку (я полагаю, что она представляет собой миллисекунды?).Для примера, следующий - тот, который я получаю от 12.12.2008:
1543618800000
Единственное, что я сделал, это изменил формат даты внутри app.module.ts
, чтобы иметь Даты в ДД / ММ./ YYYY формат:
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material';
import { MomentDateModule, MomentDateAdapter } from '@angular/material-moment-adapter';
export const MY_FORMATS = {
parse: {
dateInput: 'DD/MM/YYYY',
},
display: {
dateInput: 'DD/MM/YYYY',
monthYearLabel: 'MM YYYY',
dateA11yLabel: 'DD/MM/YYYY',
monthYearA11yLabel: 'MM YYYY',
},
};
и внутри провайдеров:
{ provide: MAT_DATE_LOCALE, useValue: 'it' },
{ provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS }
Matdatepicker правильно показывает дату в желаемом формате.Я не верю, что это проблема, но не могу быть уверен на 100%.
В чем проблема?