Почему-то я не могу применить пользовательский формат даты к своему материалу Datepicker. Я также попытался реализовать его так же, как это предлагается в
Материал Datepicker
Должно быть, это слишком сложно и не работает (
Ошибка: Datepicker: значение должно быть либо объектом даты, распознанным DateAdapter, либо строкой ISO 8601. Вместо этого получил: 1525125600000 )
Я пытался использовать эту эталонную реализацию из этого стекового ответа . В результате та же ошибка.
Это, очевидно, преобразование даты в метку времени, поэтому строка форматирования, кажется, применяется как ожидалось ....
Также мне интересно, почему реализация угловых результатов приводит к одной и той же ошибке (с другой отметкой времени, потому что она использует текущую дату в качестве начальной позиции). Проблема в том, что я совершенно не знаю, где искать ошибку
Это мой .component.ts:
import {Component, Input, forwardRef} from '@angular/core';
import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';
import {MatDatepickerInputEvent} from '@angular/material/datepicker';
import {default as _rollupMoment} from 'moment';
import * as _moment from 'moment';
const DATEMOMENT = _rollupMoment || _moment;
@Component({
selector: 'custom-date-picker',
templateUrl: 'app/components/datepicker/datepicker.component.html',
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => DatePickerComponent),
multi: true
}
]
})
export class DatePickerComponent implements ControlValueAccessor {
private tecDateValue: string = '28.05.1994';
@Input() public dateFormat: string = 'dd.MM.yyyy';
@Input() public placeholder: string;
@Input()
public get dateValue() {
return DATEMOMENT(this.tecDateValue, this.dateFormat);
}
public set dateValue(val) {
this.tecDateValue = DATEMOMENT(val).format(this.dateFormat);
this.propagateChange(this.tecDateValue);
}
public addEvent(type: string, event: MatDatepickerInputEvent<Date>) {
console.log(event.value);
this.dateValue = DATEMOMENT(event.value, this.dateFormat);
}
public writeValue(value: any) {
if (value !== undefined) {
this.dateValue = DATEMOMENT(value, this.dateFormat);
}
}
private propagateChange = (val: any) => {
};
public registerOnChange(fn: any) {
this.propagateChange = fn;
}
public registerOnTouched() {
}
}