angular – 如何为datepicker实现MD_DATE_FORMATS?
发布时间:2020-12-17 07:21:55 所属栏目:安全 来源:网络整理
导读:我正在尝试从material2为闪亮的新日期选择器实现我自己的日期格式.根据文档,我必须提供我的MD_DATE_FORMATS版本: providers: [ {provide: DateAdapter,useValue: NativeDateAdapter },{provide: MD_DATE_FORMATS,useValue: MY_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,鞠躬,为什么官方文档不能有这个? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |