angular-ng-bootstrap:实现自定义NgbDateParserFormatter以更改
发布时间:2020-12-17 07:37:36 所属栏目:安全 来源:网络整理
导读:我在弹出窗口中使用datepicker( ng-boostrap),我想将日期格式更改为’dd-mm-yyyy’. 它接缝可以解决实现一个新的NgbDateParserFormatter来替换默认的NgbDateISOParserFormatter. 但我想知道是否有另一种方式. 谢谢, 尼尔森. 更新: 使用moment.js的一个小的
我在弹出窗口中使用datepicker(
ng-boostrap),我想将日期格式更改为’dd-mm-yyyy’.
它接缝可以解决实现一个新的NgbDateParserFormatter来替换默认的NgbDateISOParserFormatter. 但我想知道是否有另一种方式. 谢谢, 更新: 使用moment.js的一个小的实现的NgbDateParserFormatter import {NgbDateParserFormatter,NgbDateStruct} from '@ng-bootstrap/ng-bootstrap'; import * as moment from 'moment'; export class NgbDateMomentParserFormatter extends NgbDateParserFormatter { constructor(private momentFormat: string) { super(); }; format(date: NgbDateStruct): string { if (date === null) { return ''; } let d = moment({ year: date.year,month: date.month - 1,date: date.day }); return d.isValid() ? d.format(this.momentFormat) : ''; } parse(value: string): NgbDateStruct { if (!value) { return null; } let d = moment(value,this.momentFormat); return d.isValid() ? { year: d.year(),month: d.month() + 1,day: d.date() } : null; } } 在一个模块中,您可以使用工厂包含提供者来指示日期格式作为参数. --- @NgModule({ --- providers: [ { provide: NgbDateParserFormatter,useFactory: () => { return new NgbDateMomentParserFormatter("DD-MM-YYYY") } } ] --- })
到今天为止,实现一个定制的NgbDateParserFormatter是最好的方法.所以是的,这是一个正确的方法.
在将来,我们可能会对NgbDateParserFormatter进行更复杂的实现,您可以在其中传递所需的格式(例如yyyy-MM-dd).添加此功能将取决于用户的兴趣. 您也可以在https://github.com/ng-bootstrap/ng-bootstrap/issues/754#issuecomment-247767027中查看更多背景信息 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |