Подтвердить что ты не робот

Angular 4 datepicker locale не работает должным образом

Я использую компонент ng-pick-datetime для выбора даты. Я отключил режим readonly, так что вход активен для ввода с клавиатуры.

<owl-date-time name="client_birthday" #client_birthday="ngModel"
    [placeHolder]="'DD.MM.YYYY'"
    [locale]="ru"
    [(ngModel)]="client.client_birthday"
    [type]="'calendar'"
    [dataType]="'string'"
    [dateFormat]="'DD.MM.YYYY'"
    [readonlyInput] ="false"
    [autoClose] ="true"
    [inputId]="'client_birthday'"                                                   
></owl-date-time>

Я пытаюсь применить языковой стандарт RU, используя date-fns:

ru: any;
ruLocale = require('date-fns/locale/ru');
ngOnInit() {     
    this.ru = {
        firstDayOfWeek: 1,
        dayNames: [...],
        dayNamesShort: [...],
        monthNames: [...],
        monthNamesShort: [...],
        dateFns: this.ruLocale
    };
}

Когда я печатаю на входе с форматом dd.mm.yyyy, сборщик делает день месяцем и месяц как день, и год в порядке. Таким образом, единственный формат, который он распознает, составляет mm.dd.yyyy, который, как представляется, является us locale. Язык моего календаря изменился, как ожидалось, но можно ли настроить формат даты для RU?

Буду признателен за любую помощь.

4b9b3361

Ответ 1

Он не может делать то, что вы хотите, когда вводите дату, набрав поле ввода ng-pick-datetime. Я прошел через реализацию компонента ng-pick-datetime. При вводе данных, с учетом ввода данных в объект даты с помощью https://date-fns.org/v1.29.0/docs/parse Вот реализация picker.component.ts/src/picker.component.ts Line-1177 Метод-parseToDate

/**
     * Parse a object to Date object
     * @param {any} val
     * @return {Date}
     * */
    private parseToDate( val: any ): Date {
        if (!val) {
            return;
        }

        let parsedVal;
        if (typeof val === 'string') {
            parsedVal = parse(val, this.dateFormat, this.now);
        } else {
            parsedVal = val;
        }

        return isValid(parsedVal) ? parsedVal : null;
    }

https://github.com/DanielYKPan/date-time-picker использовал "date-fns": "^ 2.0.0-alpha.7g" в пакете json. У него есть аргумент, чтобы передать формат даты для синтаксического анализа даты.

parsedVal = parse(val, this.dateFormat, this.now);

Но последняя версия date-fns: "^ 1.29.0", не имеет парметер для передачи формата даты. Таким образом, это также не подходит для вашего проекта. Пожалуйста, прочитайте https://date-fns.org/v1.29.0/docs/parse

parse(argument, [options])