You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PrimeNg(v15.x) Calendar清除日期后未重置验证状态与错误信息问题

PrimeNG v15.x Calendar组件日期验证异常问题

使用PrimeNG v15.x的Calendar组件时遇到以下问题:当输入无效日期(如结束日期早于开始日期)后,清除日期值,onSelect事件未触发错误提示清除操作,表单验证状态也未重置,导致提交按钮始终处于禁用状态。

代码片段

example-detail.component.html

<p-calendar id="startDate" name="startDate" showIcon="true" inputId="navigators"
    [(ngModel)]="model.startDate" [inline]="false" dateFormat="yy/mm/dd" required="true" showButtonBar="true"
    [monthNavigator]="true" [yearNavigator]="true" yearRange="2015:2050" (onSelect)="checkDate()">
</p-calendar>
<label>Start Date</label>

...

<p-calendar id="endDate" name="endDate" showIcon="true" inputId="navigators" [(ngModel)]="data.endDate"
    [inline]="false" dateFormat="yy/mm/dd" required="false" showButtonBar="true" [monthNavigator]="true"
    [yearNavigator]="true" yearRange="2015:2050" (onSelect)="checkDate()">
</p-calendar>
<label>End Date</label>

example-detail.component.ts

checkDate() {
  if (isUsable(this.data.endDate)) {
      if (this.data.endDate < this.data.startDate) {
          this.messageService.add({ key: 'date', severity: 'error', summary: '', detail: '请确保开始日期早于结束日期' });
          this.isDateValid = false;
          this.markFormControlsDirty();
      }
      else {
          this.incorrectDateMessage = null;
          this.isDateValid = true;
          this.markFormControlsDirty();
      }
  }
}

问题演示

  • 输入无效结束日期:界面显示“请确保开始日期早于结束日期”的错误提示
  • 清除结束日期选择后:错误提示未消失,提交按钮仍处于禁用状态
  • 问题演示视频:完整展示从输入无效日期到清除后状态异常的流程

内容的提问来源于stack exchange,提问作者Tim Kruger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:12:08