tabset parse ngbdatestruct ngbdatepicker ngbdateparserformatter ngb change bootstrap angular momentjs ng-bootstrap

angular - ngbdatestruct - ng-bootstrap: ¿Es correcto implementar un NgbDateParserFormatter personalizado para cambiar el formato del valor de entrada en NgbInputDatepicker?



ngbdatepicker format (1)

A partir de hoy la implementación de un NgbDateParserFormatter personalizado es la mejor manera de hacerlo. Entonces sí, es una forma correcta.

En el futuro, podríamos tener una implementación más sofisticada de NgbDateParserFormatter donde podrá simplemente pasar un formato deseado (por ejemplo, yyyy-MM-dd ). Agregar esta función dependerá del interés del usuario.

También puede consultar más información de fondo en https://github.com/ng-bootstrap/ng-bootstrap/issues/754#issuecomment-247767027

Estoy usando el datepicker ( ng-boostrap ) en una ventana emergente y me gustaría cambiar el formato de fecha a ''dd-mm-aaaa''.

Parece que se puede resolver implementando un nuevo NgbDateParserFormatter para reemplazar el NgbDateISOParserFormatter predeterminado.

Pero me preguntaba si hay otra manera.

Gracias, Nelson.

ACTUALIZAR:

Una pequeña implementación de NgbDateParserFormatter usando moment.js (probado con la versión 1.0.0-alpha.14 de 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; } }

Y en un módulo, incluye al proveedor que utiliza una fábrica para indicar el formato de fecha como parámetro.

--- @NgModule({ --- providers: [ { provide: NgbDateParserFormatter, useFactory: () => { return new NgbDateMomentParserFormatter("DD-MM-YYYY") } } ] --- })