我正在尝试从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,这很简单如下:
原文链接:https://www.f2er.com/angularjs/141757.htmlexport 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,鞠躬,为什么官方文档不能有这个?