我正在尝试使用响应式表单验证日期格式,如果格式不匹配(MM/DD/YYYY),则显示错误消息
有效的日期格式为:
6/30/2020 (MM/DD/YYYY)
12/30/2020 (MM/DD/YYYY)
以下是我所做的:
组件:
initForm() {
this.filterForm = this.formBuilder.group({
valueDate: [this.transactionFilter.valueDate,Validators.pattern(/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-9]{4}$/)]
}, { validators: this.validateFormControls });
}
validateFormControls(control: AbstractController){
// Some other validations here
}
模板
<form [formGroup]="filterForm" (ngSubmit)="onSubmit()" >
<div class="col">
<mat-form-field>
<mat-label>Value Date</mat-label>
<input matInput [matDatepicker]="txtValueDate" placeholder="MM/DD/YYYY" formControlName="valueDate">
<mat-datepicker-toggle matSuffix [for]="txtValueDate"></mat-datepicker-toggle>
<mat-datepicker #txtValueDate></mat-datepicker>
<!-- <mat-error *ngIf="filterForm.controls['valueDate'].hasError()">Invalid date Format</mat-error> -->
</mat-form-field>
</div>
<button mat-raised-button color="primary" type="submit" [disabled]="!filterForm.valid">submit</button>
</form>
当我输入日期(手动/日期选择器)时,提交按钮总是被禁用。有没有更好的方法在响应式表单中进行日期验证?
2条答案
按热度按时间pftdvrlh1#
默认的日期选择器格式是yyyy-MM-dd,所以你应该这样做:
组件
模板:
vof42yt12#
您拥有的正则表达式匹配DD/MM/YYYY日期模式,在澳大利亚和英国等地使用。
对于美国格式,你说的MM/DD/YYYY你将需要交换前两组,使它
这将足以验证格式。但是,它不会赶上2月30日等事情。对于这些类型的验证,我建议使用自定义验证器。我在下面贴了一张粗糙的。它仍然不处理二月和闰年,实际上限制了年份,但会让你大部分的方式。
}