如何以编程方式设置猫头鹰日期时间选择器格式?

时间:2019-05-14 11:13:18

标签: angular typescript datetimepicker

直到最近我一直在使用这个日期时间选择器...

https://www.npmjs.com/package/ng-pick-datetime

总的来说,这是一个非常不错的项目,即使它已经有一段时间没有被开发了。但是,我面临着一个问题。我希望能够随时随地更改用户所表示的格式(不是实际的数据,这非常好)。

允许用户按照自己希望的方式更改日期格式。因此格式看起来像这些示例:

  • “ 2009年12月20日”
  • “ 2009年12月20日”
  • “ 2009 12 20”

我从后端获取格式首选项,作为回报,该首选项将在所有显示组件中使用。表,或者可以应用的任何值。

但是,此应用程序除了提供方法“ setLocale()”外,没有提供任何更改格式的方法。这并不是一个解决方案,因为它可以将日历从字面上转换为相应的语言。因此,根据文档,您可以提供组件-与moment.js一起使用-您自己的格式。有点像这样...

import { NgModule } from '@angular/core';
import { OwlDateTimeModule, OWL_DATE_TIME_FORMATS} from 'ng-pick-datetime';
import { OwlMomentDateTimeModule } from 'ng-pick-datetime-moment';

// See the Moment.js docs for the meaning of these formats:
// https://momentjs.com/docs/#/displaying/format/
export const MY_MOMENT_FORMATS = {
    parseInput: 'l LT',
    fullPickerInput: 'l LT',
    datePickerInput: 'l',
    timePickerInput: 'LT',
    monthYearLabel: 'MMM YYYY',
    dateA11yLabel: 'LL',
    monthYearA11yLabel: 'MMMM YYYY',
};

@NgModule({
    imports: [OwlDateTimeModule, OwlMomentDateTimeModule],
    providers: [
        {provide: OWL_DATE_TIME_FORMATS, useValue: MY_MOMENT_FORMATS},
    ],
})
export class AppExampleModule {
}

它按预期效果很好。但是,我希望以后可以通过编程方式对此进行更改……这可悲的是,这表明我对编码缺乏了解。虽然我在技术上可以申请...

@ViewChild('picker') picker: any; 
...
ngAfterViewInit() {
this.picker.datetimeFormat = {
// new format...
}
}

这最终是不可行的,因为我的表单上可能有也可能没有日期选择器,这取决于单击了哪些字段。

0 个答案:

没有答案