typescript - 如何在 ngbdatepicker 中將日期選擇器的日期格式更改為 dd/mm/yyyy
我正在使用 ng-bootstrap 的日期選擇器:https://ng-bootstrap.github.io/#/components/datepicker/api 但我不知道如何將日期格式更改為 dd/mm/yyyy。現在它顯示的是 yyyy/mm/dd,但我想要的是 dd/mm/yyyy。請有人幫忙。
示範:https://stackblitz.com/edit/angular-6wpn3h-ahcq4x?file=src/app/datepicker-popup.html
<div class="input-group">
<input class="form-control" placeholder="dd/mm/yyyy"
name="dp" [(ngModel)]="model" ngbDatepicker #d="ngbDatepicker">
<div class="input-group-append">
<button class="btn btn-outline-secondary calendar" (click)="d.toggle()" type="button"></button>
</div>
</div>
答案#1
以 ng-bootstrap 的 NgbDateISOParserFormatter 為範例,在 datepicker-popup.ts 中創建自訂格式化器。下面的程式碼(依我看)比原始程式碼更直觀,且不依賴匯入 util.ts:
import { NgbDateParserFormatter, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';
import { Injectable } from '@angular/core';
function padNumber(value: number | null) {
if (!isNaN(value) && value !== null) {
return `0${value}`.slice(-2);
} else {
return '';
}
}
@Injectable()
export class NgbDateCustomParserFormatter extends NgbDateParserFormatter {
parse(value: string): NgbDateStruct | null {
if (value) {
const dateParts = value.trim().split('/');
let dateObj: NgbDateStruct = { day: <any>null, month: <any>null, year: <any>null }
const dateLabels = Object.keys(dateObj);
dateParts.forEach((datePart, idx) => {
dateObj[dateLabels[idx]] = parseInt(datePart, 10) || <any>null;
});
return dateObj;
}
return null;
}
format(date: NgbDateStruct | null): string {
return date ?
`${padNumber(date.day)}/${padNumber(date.month)}/${date.year || ''}` :
'';
}
}
然後在 datepicker-popup.module.ts 中導入 NgbDateCustomParserFormatter 並在 @NgModule 中設置提供者:
providers: [
{provide: NgbDateParserFormatter, useClass: NgbDateCustomParserFormatter}
]
我已經分叉了你的 StackBlitz,並在這裡添加了這個功能。
