我遇到了 PrimeNG 日历组件的问题,其中 12 月的最小日期设置然后是禁用的最小年份

问题描述 投票:0回答:1

enter image description here

我遇到了 PrimeNG 日历组件的问题,其中 12 月 2 日至 31 日的最短日期设置无法按预期工作,导致最短年份被禁用。如果最大日期为 1 月 1 日至 30 日,则年份选择器中的最大年份也会被禁用。

enter image description here
这里应该启用 2023 年。

angular primeng primeng-calendar
1个回答
0
投票

此问题在 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');
              }
            } 
          }
        }
      }
© www.soinside.com 2019 - 2024. All rights reserved.