Когда у вас есть другой формат даты в вашем средстве выбора даты по сравнению с вашей собственной структурой данных, в общем, у вас есть два варианта: 1) как-то сказать компоненту datePicker преобразовать его структуру данных в ваши, это обычно делается черезпередача класса адаптера 2) разрешите datePicker передавать свой собственный формат данных в форму или модель и выполнять преобразование только вручную, когда вы публикуете форму или устанавливаете значение формы.
Использование адаптера
На самом деле средство выбора даты действительно дает вам возможность предоставить адаптер, использование довольно хорошо описано в https://material.angular.io/components/datepicker/overview
Преобразование вручную
При преобразовании вручную необходимо выполнить преобразование из структуры данных в структуру выбора даты, чтобы установить начальное значение и когда родительский компонент обновит значение формы. И вы должны выполнять преобразование в обратном направлении всякий раз, когда хотите сохранить данные из формы.
Поэтому вам не нужно добавлять метод преобразования в шаблон каким-либо образом, выполните преобразование в отправке. метод. Что действительно неверно в вашем примере, так это то, что [formControl]
ожидает элемент управления угловой формы, а не значение (в данном случае сама дата).
Лично я бы пошел с решением для адаптера, потому что таким образомлогика преобразования не разбросана, а сосредоточена на конкретном классе, который также легче тестировать.
Совершенно несвязанная заметка
В общем, старайтесь невызывать методы в привязках значений, например.
<input matInput [formControl]="getDate(userPrivate.date_of_birth)" >
(некоторые атрибуты для краткости опущены)
Эти методы вызываются при каждом обнаружении изменений (что может происходить довольно часто, особенно если вы неt ChangeDetectionStrategy.onPush
), поэтому преобразование выполняется при каждом обнаружении изменений, даже если исходное значение не изменилось.
Очень сложно скрыть сложные вычисления в этих связанных методах, которые могут значительно замедлитьвниз вашего приложения.
Вместо этого выполняйте вычисления только при изменении исходного значения, сохраняйте результат в поле компонента, связывайте это полев шаблоне.