Правильно ли реализовать пользовательский NgbDateParserFormatter для изменения формата входного значения в NgbInputDatepicker?
Я использую DatePicker (нг-boostrap) во всплывающем окне, и я хотел бы изменить формат даты наdd-mm-yyyy
.
Кажется, что это может быть решено путем реализации новогоNgbDateParserFormatter
заменить по умолчаниюNgbDateISOParserFormatter
.
Но мне было интересно, есть ли другой путь.
ОБНОВИТЬ:
Небольшая реализацияNgbDateParserFormatter
используя Moment.js (протестировано с версией 1.0.0-alpha.14 ng-bootstrap):
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") }
}
]
---
})