gpt4 book ai didi

angular - 更改 ngbDatepicker 输入模板

转载 作者:太空狗 更新时间:2023-10-29 18:18:03 27 4
gpt4 key购买 nike

我正在开发一个使用此示例的应用:

https://stackblitz.com/angular/rynxmynlykl

我想要的是以不同的格式显示选择的日期。我想要 mm/dd/yyyy,而不是 yyyy-mm-dd。占位符很容易更改,但我无法在文档中找到我要查找的内容 ( https://ng-bootstrap.github.io/#/components/datepicker/api )。

ngModel 接受一个包含年、月和日的对象。 Datepicker 然后将其格式化为上述格式。

我找到的最接近的答案在这里,但现在已经过时了(How to change model structure of angular powered bootstrap ngbDatepicker)。

有没有人遇到过这种情况?

最佳答案

the DatePicker documentation 中所述, 您可以提供 NgbDateParserFormatter 的自定义版本.参见 this stackblitz用于演示。

解析器/格式化程序的以下代码改编自 this GitHubGist通过 Niels Robin-Aubertin :

import { Injectable } from "@angular/core";
import { NgbDateParserFormatter, NgbDateStruct } from "@ng-bootstrap/ng-bootstrap";

@Injectable()
export class CustomDateParserFormatter extends NgbDateParserFormatter {

parse(value: string): NgbDateStruct {
if (value) {
const dateParts = value.trim().split('/');
if (dateParts.length === 1 && this.isNumber(dateParts[0])) {
return { year: this.toInteger(dateParts[0]), month: null, day: null };
} else if (dateParts.length === 2 && this.isNumber(dateParts[0]) && this.isNumber(dateParts[1])) {
return { year: this.toInteger(dateParts[1]), month: this.toInteger(dateParts[0]), day: null };
} else if (dateParts.length === 3 && this.isNumber(dateParts[0]) && this.isNumber(dateParts[1]) && this.isNumber(dateParts[2])) {
return { year: this.toInteger(dateParts[2]), month: this.toInteger(dateParts[0]), day: this.toInteger(dateParts[1]) };
}
}
return null;
}

format(date: NgbDateStruct): string {
let stringDate: string = "";
if (date) {
stringDate += this.isNumber(date.month) ? this.padNumber(date.month) + "/" : "";
stringDate += this.isNumber(date.day) ? this.padNumber(date.day) + "/" : "";
stringDate += date.year;
}
return stringDate;
}

private padNumber(value: number) {
if (this.isNumber(value)) {
return `0${value}`.slice(-2);
} else {
return "";
}
}

private isNumber(value: any): boolean {
return !isNaN(this.toInteger(value));
}

private toInteger(value: any): number {
return parseInt(`${value}`, 10);
}
}

日期解析器/格式化器被添加到模块中的提供者:

import { NgbDateParserFormatter, ... } from '@ng-bootstrap/ng-bootstrap';
import { CustomDateParserFormatter } from "./datepicker-formatter";

@NgModule({
...
providers: [{ provide: NgbDateParserFormatter, useClass: CustomDateParserFormatter }]
})
export class AppModule { }

关于angular - 更改 ngbDatepicker 输入模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53127490/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com