Что вы можете сделать, это удалить отключенное свойство на кнопке - и обработать отправку в вашем компоненте. Так что в вашем компоненте, если form.valid, затем route, если нет, тогда сделайте логику для отображения всплывающего окна.
Компонент:
onSubmitOfForm(): void {
if(form.valid){
this.router.navigate(['/']);
} else {
// Show popup
}
}
Или вы можете переместить проверку на уровень формы вместо компонента, например:
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
rangeStart: [null, Validators.required],
rangeEnd: [null, Validators.required]
}, { validator: MyAwesomeRangeValidator});
}
MyAwesomeRangeValidator, который будет выполнять любые ваши требования к валидации.
const MyAwesomeRangeValidator: ValidatorFn = (fg: FormGroup) => {
const start = fg.get('rangeStart').value;
const end = fg.get('rangeEnd').value;
return start !== null && end !== null && start < end
? null
: { range: true };
};
для справки: https://medium.com/@realTomaszKula/angular-cross-field-validation-d94e0d063b61