Angular 4 datepicker语言环境无法正常工作

Gyu*_*l R 11 javascript jquery datepicker angular

我正在为日期选择器使用ng-pick-datetime UI组件.我禁用了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>
Run Code Online (Sandbox Code Playgroud)

我尝试RU使用date-fns以下方法应用语言环境:

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

当我用dd.mm.yyyy格式输入输入时,选择器将日期作为一个月和一个月作为一天,并且年份是可以的.因此,它识别的唯一格式是mm.dd.yyyy,这似乎是us区域设置.我的日历语言按预期更改了,但是也可以配置日期格式RU吗?

我将不胜感激任何帮助.

Jan*_*ana 6

通过在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;
    }
Run Code Online (Sandbox Code Playgroud)

https://github.com/DanielYKPan/date-time-picker在包json上使用了"date-fns":"^ 2.0.0-alpha.7g".它有一个参数将日期格式传递给解析日期.

parsedVal = parse(val, this.dateFormat, this.now);
Run Code Online (Sandbox Code Playgroud)

但最新版本的date-fns:"^ 1.29.0",没有parmeter来传递日期格式.所以它也失败了你的项目.请阅读https://date-fns.org/v1.29.0/docs/parse

parse(argument, [options])
Run Code Online (Sandbox Code Playgroud)


san*_*lot 2

与此类似:

@NgModule({
  providers: [
    { provide: LOCALE_ID, useValue: "ru-ru"},
    //otherProviders...
  ]
})
Run Code Online (Sandbox Code Playgroud)

看看这个 How to set locale in DatePipe in Angular 2?