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
相关产品推荐
相关产品推荐

