我遇到了 PrimeNG 日历组件的问题,其中 12 月 2 日至 31 日的最短日期设置无法按预期工作,导致最短年份被禁用。如果最大日期为 1 月 1 日至 30 日,则年份选择器中的最大年份也会被禁用。
此问题在 github 中仍处于开放状态。
但是我们可以通过 CSS 本身来解决这个问题。
HTML
<p-calendar #startDate></p-calendar>
ts
@ViewChild('startDate') datePicker;
ngDoCheck() {
if (this.datePicker && this.datePicker.contentViewChild) {
let allYear = DomHandler.find(this.datePicker.contentViewChild.nativeElement, '.p-yearpicker .p-yearpicker-year');
if (allYear.length > 0) {
let minDate = this.datePicker._minDate != undefined ? this.datePicker._minDate.getFullYear() : undefined;
let maxDate = this.datePicker._maxDate != undefined ? this.datePicker._maxDate.getFullYear() : undefined;
if(minDate){
let value = allYear.findIndex(data => data.innerText == minDate);
if (DomHandler.hasClass(allYear[value], 'p-disabled')) {
DomHandler.removeClass(allYear[value], 'p-disabled');
}
}
if(maxDate){
let value = allYear.findIndex(data => data.innerText == maxDate);
if (DomHandler.hasClass(allYear[value], 'p-disabled')) {
DomHandler.removeClass(allYear[value], 'p-disabled');
}
}
}
}
}