Мне нужна ваша помощь, используя NgbDateParserFormatter для средства выбора даты ng-bootstrap. Мне нужен немецкий формат дд.мм.гггг (например, 31.03.2017).
У меня есть плункер, но он работает некорректно:
- выбор некоторых дат работы (например, выбор 17.03.2017 приводит к 17.03.2017)
- выбор некоторых дат не работает (выбор 02.09.1937 приводит к 01.09.1937)
- ввод даты меняет местами день и месяц (01.03.2017 получает 03.01.2017, а 14.03.2017 получает пустой ввод из-за отсутствия 03.14.2017)
Вот код:
import { NgbDateParserFormatter, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';
import { DatePipe } from '@angular/common';
export class CustomNgbDateParserFormatter extends NgbDateParserFormatter {
datePipe = new DatePipe('de-AT');
constructor(
private dateFormatString: string) {
super();
}
format(date: NgbDateStruct): string {
if (date === null) {
return '';
}
try {
return this.datePipe.transform(new Date(date.year, date.month - 1, date.day), this.dateFormatString);
} catch (e) {
return '';
}
}
parse(value: string): NgbDateStruct {
let returnVal: NgbDateStruct;
if (!value) {
returnVal = null;
} else {
try {
let dateParts = this.datePipe.transform(value, 'M-d-y').split('-');
returnVal = { year: parseInt(dateParts[2]), month: parseInt(dateParts[0]), day: parseInt(dateParts[1]) };
} catch (e) {
returnVal = null;
}
}
return returnVal;
}
}
Не могли бы вы мне помочь, пожалуйста?
Большое спасибо за Вашу помощь.