angular – 如何为datepicker实现MD_DATE_FORMATS?

前端之家收集整理的这篇文章主要介绍了angular – 如何为datepicker实现MD_DATE_FORMATS?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试从material2为闪亮的新日期选择器实现我自己的日期格式.根据文档,我必须提供我的MD_DATE_FORMATS版本:
providers: [
  {provide: DateAdapter,useValue: NativeDateAdapter },{provide: MD_DATE_FORMATS,useValue: MY_DATE_FORMATS },],

当我使用默认实现时:

export const MD_NATIVE_DATE_FORMATS: MdDateFormats = {
  parse: {
    dateInput: null,},display: {
    dateInput: {year: 'numeric',month: 'numeric',day: 'numeric'},monthYearLabel: {year: 'numeric',month: 'short'},dateA11yLabel: {year: 'numeric',month: 'long',monthYearA11yLabel: {year: 'numeric',month: 'long'},}
};

我收到日期输入为空的错误.
但它到底是什么类型的?文档说任何.

如果我尝试放置一些虚拟函数,我会收到错误:_dateAdapter.parse不是函数.

function dateInput() {
    return 'ddd';
}
const MY_DATE_FORMATS: MdDateFormats = Object.assign({},MD_NATIVE_DATE_FORMATS,{parse: dateInput });

如何使其工作?

非常感谢推动解决方案的@MariusR.如上所述,您需要提供自己的日期适配器.从plunkr,这很简单如下:
export class OurDateAdapter extends NativeDateAdapter {
  parse(value: any): Date | null {
    if ((typeof value === 'string') && (value.indexOf('/') > -1)) {
      const str = value.split('/');
      return new Date(Number(str[2]),Number(str[1])-1,Number(str[0]),12);
    }
    const timestamp = typeof value === 'number' ? value : Date.parse(value);
    return isNaN(timestamp) ? null : new Date(timestamp);
  }
}

这可以是您的任何TS文件,只需要在组件的模块中使用日期选择器提供:

providers: [
    {provide: DateAdapter,useClass: OurDateAdapter}
  ]

在组件中,您需要在构造函数中使用它:

constructor(private dateAdapter: DateAdapter<Date>) {
    this.dateAdapter.setLocale('en-GB');
  }

可以在这里收集语言环境列表,plunkr示例使用葡萄牙语,我的是英国英语.

http://www.i18nguy.com/unicode/language-identifiers.html

MariusR,鞠躬,为什么官方文档不能有这个?

原文链接:https://www.f2er.com/angularjs/141757.html

猜你在找的Angularjs相关文章