Angular 从日期开始的角度形式验证应大于到日期
我创建了一个小的反应式表单验证 表单验证工作正常,但当我更改Angular 从日期开始的角度形式验证应大于到日期,angular,angular-forms,Angular,Angular Forms,我创建了一个小的反应式表单验证 表单验证工作正常,但当我更改fromDate后,我将更改为toDate时,时间验证不起作用 如果我按相反的顺序进行验证,那么验证就会起作用 这里我添加了我的Stackblitz,请帮助我,我如何克服这个问题您的问题与您使用自定义时间验证器的方式有关。发生的事情是,在您拥有toDate值之前,尝试验证fromDate 因此,您的表单如下所示: this._formGroup = this._formbuilder.group({ FirstNam
fromDate
后,我将更改为toDate
时,时间验证不起作用
如果我按相反的顺序进行验证,那么验证就会起作用
这里我添加了我的Stackblitz,请帮助我,我如何克服这个问题您的问题与您使用自定义时间验证器的方式有关。发生的事情是,在您拥有
toDate
值之前,尝试验证fromDate
因此,您的表单如下所示:
this._formGroup = this._formbuilder.group({
FirstName: ["", [Validators.required]],
LastName: ["", [Validators.required]],
_gender: ["1", [Validators.required]],
_dob: ["", [Validators.required]],
_fromDate: ["", [Validators.required, formvalidation.comparedate]],
_ToDate: ["", [Validators.required, formvalidation.comparedate]]
});
您的自定义验证器看起来是这样的
static comparedate(control: AbstractControl) {
if (control.parent) {
let _fromDate = (<FormGroup>control.parent).get("_fromDate").value;
let _netDate = (<FormGroup>control.parent).get("_ToDate").value;
if (_fromDate <= _netDate) {
(<FormGroup>control.parent).get("_fromDate").clearValidators;
(<FormGroup>control.parent).get("_ToDate").clearValidators;
return null;
} else {
return { Datecompare: null };
}
}
因此,在这个验证器中,我首先检查两个控件是否都有值,如果它们都有值,然后检查是否应该出现Datecompare
错误。在验证有效的情况下(\u formDate<\u toDate),我将从\u toDate
和\u fromDate
控件中删除错误
这是一份工作我的回答解决了你的问题吗?晚餐兄弟非常感谢。。
static comparedate(control: AbstractControl) {
if (control.parent) {
let _fromDate = (<FormGroup>control.parent).get("_fromDate").value;
let _toDate = (<FormGroup>control.parent).get("_toDate").value;
if (_fromDate && _toDate) {
if (_fromDate >= _toDate) {
control.parent.get("_toDate").setErrors({ Datecompare: true });
control.parent.get("_fromDate").setErrors({ Datecompare: true });
return { Datecompare: true };
}
control.parent.get("_toDate").setErrors(null);
control.parent.get("_fromDate").setErrors(null);
return null;
}
return null;
}
}