В нашем приложении мы глобально установили формат ввода:
export function getDatepickerConfig(): BsDatepickerConfig {
return Object.assign(new BsDatepickerConfig(), {
dateInputFormat: 'DD-MM-YYYY'
});
}
Что мы добавляем в наш корневой модуль:
{ provide: BsDatepickerConfig, useFactory: getDatepickerConfig },
Мы используем этот контроль в реактивном виде:
<input bsDatepicker
class="form-control"
id="expiryDate"
formControlName="expiryDate"
type="text">
Это работает, но не так, как ожидалось. Я ожидал, что этот формат будет использоваться, когда пользователь вводит дату вручную. Я не ожидал, что этот формат также будет использоваться, когда начальное значение устанавливается через конфигурацию FormControl.
Когда мы устанавливаем это значение в качестве значения по умолчанию в FormControl: «2015-12-31T00: 00: 00 + 01: 00»
Контроль показывает: 20-12-2031
Таким образом, кажется, что входящие даты ISO анализируются с использованием этого формата ввода. Это предполагаемое поведение?
bsDatepicker является ControlValueAccessor, я ожидаю, что элемент управления будет использовать этот dateInputFormat в функции registerOnChange, но не в своей функции writeValue
edit: я только что проверил, что реализация ControlValueAccessor входной директивы datepicker действительно использовала dateInputFormat в в обоих случаях. Я решил эту проблему, убедившись, что начальное значение является объектом Date, а не строкой ISO.