HTML
обернуть все ваши входные данные в form
тег
вместо
<form #stepOneForm="ngForm">
сделать
<form (ngSubmit)="onSubmit()" [formGroup]="myForm"></form>
вместо
<input matInput placeholder="Name" [formControl]="name" [errorStateMatcher]="matcher">
сделать
<input matInput placeholder="Name" formControlName="name">
, который идет со всеми входными данными formControlName
, а не [formControl]
вместо
<button type="submit [disabled]="!stepOneForm.form.valid" mat-button matStepperNext>Go to next step</button>
сделать
<button type="submit" [disabled]="myForm.invalid" mat-button matStepperNext>Go to next step</button>
- при попытке показать сообщение об ошибке для доступа к проверке ошибок ввода
вместо
name.hasError('required')
сделать
myForm.get('name').errors?.required
//or
myForm.get('name').errors['required']
оба способа проверки ошибок сработают в основном по-разному между ними, используя safe navigation operator (?.)
, это как если бы вы сказали «сначала проверьте hay angular, если есть ошибка (не unll или undefined), затем проверьте тип требуемой ошибки, maxLength ... и т. Д. «главная цель - предотвратить появление ошибки JavaScript cannot read property
для справки оператор безопасной навигации
или (другой случай проверки)
*ngIf="myForm.get('name').invalid && myForm.get('name').touched"
TS
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl, Validators } from '@angular/forms';
@Component({
selector: '...',
templateUrl: '...',
styleUrls: ['...']
})
export class myApp implements OnInit {
myForm: FormGroup;
ngOninit() {
this.myForm = new FormGroup({
'name': new FormControl(null, Validators.required),
'policyNo': new FormControl(null, validators.minLength(5))
// the rest of inputs with the same approach
});
}
onSubmit() {
// when submit the form do something
}
}
вы используете здесь reactive forms
не template driven
каждый использует по-разному, убедитесь, что вы используете правильный путь для обоих, потому что вы путаете reactive approach
с template driven approach
, что все испортило.
прочитайте рекомендацию Reqctive Froms Шаблоны форм