ポップアップでdatepicker(ng-boostrap)を使用しています。日付のフォーマットを 'dd-mm-yyyy'に変更したいと思います。ng-bootstrap:カスタムNgbDateParserFormatterを実装して、NgbInputDatepickerの入力値の形式を変更するのは正しいですか?
新しいNgbDateParserFormatterを実装して、デフォルトのNgbDateISOParserFormatterを置き換えることができます。
しかし、別の方法があるのだろうかと思っていました。
ありがとう、 ネルソン。
UPDATE:
NgbDateParserFormatterの小さな実装あなたが含まmoment.js (NG-ブートストラップのバージョン1.0.0-alpha.14でテスト済み)
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;
}
}
、モジュール内を、使用してプロバイダは日付形式をパラメータとして示すためにファクトリを使用します。カスタムNgbDateParserFormatter
を実装し、今日のよう
---
@NgModule({
---
providers: [
{
provide: NgbDateParserFormatter,
useFactory:() => { return new NgbDateMomentParserFormatter("DD-MM-YYYY") }
}
]
---
})
に注意してくださいにいくつかのより多くの背景情報をチェックするかもしれない - 現時点ではゼロインデックス付きヶ月を持っていることを想定しています。あなたのコードは12月の毎日失敗します。 – David
ありがとう@David、私はコードを修正しました。私がコードを投稿したとき、NgbDateStructもゼロのインデックス付き月を使用していましたが、それは後で変更されました。 –
@ネルソンあなたのアプローチを試みました。私は、日付ピッカーコンポーネントの日付形式を変更するために、アプリケーションのコアモジュールにプロバイダを追加しました。動いていない。私を助けてください。 –