Вы можете создать собственный валидатор.
custom-validator.ts
export function DateLessThanOrEqualsValidator(dateCompareControlName: string) {
let thisDateControl: AbstractControl;
let otherDateControl: AbstractControl;
return function DateLessThanOrEqualsValidate(control: AbstractControl): ValidationErrors {
if (!control.parent) {
return null;
}
if (!thisDateControl) {
thisDateControl = control;
otherDateControl = control.parent.get(dateCompareControlName) as AbstractControl;
if (!otherDateControl) {
throw new Error('dateLessThanOrEqualsValidator(): other control is not found in parent group');
}
otherDateControl.valueChanges.subscribe(() => {
thisDateControl.updateValueAndValidity();
});
}
if (!otherDateControl || !otherDateControl.value) {
return null;
}
const date1 = thisDateControl.value;
const date2 = otherDateControl.value;
if (date1 !== null && date2 !== null && date1 > date2) {
return {
'date_less_than_or_equal': true
};
}
return null;
};
}
И использовать его:
this.myForm = new FormGroup({
'startDate': new FormControl('', [Validators.required, DateLessThanOrEqualsValidator('endDate')]), // must be same "endDate"
'endDate': new FormControl('', [Validators.required]),
});
Каждый раз startDate > endDate
, myForm
будет недействительным
Демо здесь