【发布时间】:2020-10-16 04:57:44
【问题描述】:
我正在尝试为日期范围检查实现自定义角度验证器。
验证器本身正常工作并返回验证错误。但是,客户端似乎没有发生任何事情 - 没有显示错误并且表单被认为是有效的。我尝试了对这段代码的各种更改,但没有任何乐趣。
有什么想法可以尝试吗?
HTML:
<div class="alert-danger" *ngIf="form.controls.creditCheckDate.errors?.dateRange">
Date should be from 1/1/2000 to Today.
</div>
.ts:
const controlsConfig = {
creditCheckDate: ['', [Validators.required,
CustomValidators.dateRange(new Date(2000, 1), new Date(Date.now()))]]
};
return this.fb.group(controlsConfig);
验证器:
static dateRange(minDate: Date | null, maxDate: Date | null): ValidatorFn {
return (c: AbstractControl): ValidationErrors | null => {
const validationError = { dateRange: true };
if (!c.value) {
return null;
}
const timestamp = Date.parse(c.value);
if (isNaN(timestamp)) {
return validationError;
}
const date = new Date(timestamp);
if ((minDate && minDate > date) || (maxDate && maxDate < date)) {
return validationError;
}
return null;
};
}
【问题讨论】:
-
尝试添加
*ngIf="NameOfYourForm?.hasError('dateRange')" -
@Kardon63 谢谢,不幸的是它仍然不起作用。我尝试在控件更改事件中将表单记录到控制台中,即使验证器返回错误,表单也被认为是有效的,因此控件中没有错误。
-
你能创建一个堆栈闪电战吗?
标签: angular typescript validation frontend customvalidator