Я пытаюсь использовать ngx-mat-datetime-picker в приложении angular .io с пользовательским адаптером даты, основанным на этом gist . Мое приложение обращается к REST-API, в котором есть элементы с полем datetime в формате 2020-01-08T01:02:03.000Z
.
{ "idxdevice": 123, "devname": "test", "devoutdated": "2020-05-01T09:42:27.281Z" }
. После извлечения элемента я преобразую его в JavaScript -Date-Element в detail-component
s get () - Метод:
get(): void {
const idxdevice = +this.route.snapshot.paramMap.get('idx');
this.deviceService.getDevice(idxdevice).subscribe(device => {
this.device = device;
this.device.devoutdated = new Date(device.devoutdated)
});
}
Мое поле ввода во внешнем интерфейсе выглядит так:
<mat-form-field class="detail-form-field">
<mat-label>Outdated since</mat-label>
<input matInput [ngxMatDatetimePicker]="datetimepicker" [value]="device.devoutdated" (input)="device.devoutdated = $event.target.value" />
<mat-datepicker-toggle matSuffix [for]="datetimepicker"></mat-datepicker-toggle>
<ngx-mat-datetime-picker #datetimepicker></ngx-mat-datetime-picker>
</mat-form-field>
DATE_FORMAT для адаптера даты выглядит следующим образом
export const MAT_DATE_FNS_DATE_FORMATS = {
parse: {
dateInput: 'dd.MM.yyyy HH:mm:ss',
},
display: {
dateInput: 'dd.MM.yyyy HH:mm:ss',
monthYearLabel: 'LLL y',
dateA11yLabel: 'MMMM d, y',
monthYearA11yLabel: 'MMMM y',
}
};
Если я открою браузер, результат в поле ввода будет ожидаемым. Теперь, если я изменяю дату и время в поле ввода с помощью средства выбора даты (на самом деле, изменение значений с помощью клавиатуры очищает поле ввода и не позволяет мне вставлять ничего, кроме иногда одного числа), PUT-запрос обратно на сервер содержит " предыдущий "datetime, а не тот, который я выбрал в поле ввода.
С моей точки зрения, поле devoutdated
не обновляется при изменении даты (но оно работает для других полей, таких как * 1022). *). Мое первое предположение состоит в том, что это как-то связано с полем Date, которое следует преобразовывать обратно в строку при обращении к API. Но с другой стороны, я думаю, что это другая проблема, не связанная с обновлением поля, которая должна быть покрыта адаптером даты.
Есть предложения, что вызывает эту проблему?