Попробуйте использовать реактивные формы. Сгруппируйте свои контроллеры в группу форм и добавьте валидаторы для каждого контроллера, чтобы пользователь не мог обработать данные формы без заполнения всех обязательных полей. Затем вы можете проверить в функции OnSubmit, являются ли данные формы недействительными (или нет), и остановить обработку данных.
Обратите внимание на следующие ссылки:
Реактивные формы угловые
Проверка формы угловая
Вы можете увидеть мой пример ниже:
export class AppComponent implements OnInit {
registerForm: FormGroup;
submitted = false;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.registerForm = this.formBuilder.group({
firstName: ['', Validators.required],
lastName: ['', Validators.required],
});
}
onSubmit() {
this.submitted = true;
// stop here if form is invalid
if (this.registerForm.invalid) {
return;
}
//process data HERE after checking if the form is invalid
}
}
HTML-код
<form [formGroup]="registerForm" (ngSubmit)="onSubmit()">
<div class="form-group">
<label>First Name</label>
<input type="text" formControlName="firstName" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.firstName.errors }" />
<div *ngIf="submitted && f.firstName.errors" class="invalid-feedback">
<div *ngIf="f.firstName.errors.required">First Name is required</div>
</div>
</div>
<div class="form-group">
<label>Last Name</label>
<input type="text" formControlName="lastName" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.lastName.errors }" />
<div *ngIf="submitted && f.lastName.errors" class="invalid-feedback">
<div *ngIf="f.lastName.errors.required">Last Name is required</div>
</div>
</div>
</div>
</form>