Я хочу иметь реактивную форму для создания клиентов, однако я получаю эту ошибку в консоли при обслуживании моего приложения:
TypeError: Cannot read property 'errors' of undefined
Указывает на первый элемент <li>
этогоблок:
<ul class="help-block">
<li *ngIf="form.controls.email.errors?.required && form.controls.email.dirty">Required</li>
<li *ngIf="(form.controls.email.errors?.minlength || form.controls.email.errors?.maxlength) && form.controls.email.dirty">Minimum chars: 5, maximum 35</li>
</ul>
полный код формы:
<form style="border:1px solid" [formGroup]="form"
(submit)="onRelatieSubmit()">
<h4> New client </h4>
<div class="form-group">
<label for="company">Company</label>
<div class="col-5">
<input [ngClass]="{'is-invalid': (form.controls.company.errors &&
form.controls.company.dirty),
'is-valid': !form.controls.company.errors}" class="form-control" type="text" name="company" (autocomplete)="off" placeholder="Name" formControlName="company" (blur)="checkUsername()"/>
<ul class="help-block">
<li *ngIf="form.controls.company.errors?.required && form.controls.company.dirty">Required</li>
<li *ngIf="(form.controls.company.errors?.minlength || form.controls.company.errors?.maxlength) && form.controls.company.dirty">Minimum chars: 5, maximum 25</li>
</ul>
</div>
</div>
<div class="form-group">
<label for="addressLineOne">Address</label>
<div class="col-5">
<input [ngClass]="{'is-invalid': (form.controls.addressLineOne.errors && form.controls.addressLineOne.dirty) ,
'is-valid': !form.controls.addressLineOne.errors}" id="addressLineOne" class="form-control" type="text" name="addressLineOne" (autocomplete)="off" placeholder="Address" formControlName="addressLineOne" (blur)="checkEmail()"/>
<ul class="help-block">
<li *ngIf="form.controls.addressLineOne.errors?.required && form.controls.addressLineOne.dirty">Requiredt</li>
</ul>
</div>
</div>
<div class="form-group">
<label for="city">City</label>
<div class="col-5">
<input [ngClass]="{'is-invalid': (form.controls.city.errors && form.controls.city.dirty), 'is-valid': !form.controls.city.errors}" id="city" class="form-control" type="text" name="city" (autocomplete)="off" placeholder="City" formControlName="city"/>
<ul class="help-block">
<li *ngIf="form.controls.city.errors?.required && form.controls.city.dirty">Requiredt</li>
</ul>
</div>
</div>
</div>
<div class="form-group">
<label for="email">Email</label>
<div class="col-5">
<input [ngClass]="{'is-invalid': (form.controls.email.errors && form.controls.email.dirty),
'is-valid': !form.controls.email.errors}" id="email" class="form-control" type="text" name="email" (autocomplete)="off" placeholder="Email" formControlName="email"/>
<ul class="help-block">
<li *ngIf="form.controls.email.errors?.required && form.controls.email.dirty">Required</li>
<li *ngIf="(form.controls.email.errors?.minlength || form.controls.email.errors?.maxlength) && form.controls.email.dirty">Minimum chars: 5, maximum 35</li>
</ul>
</div>
</div>
<div class="form-group">
<label for="country">Country</label>
<div class="col-5">
<input [ngClass]="{'is-invalid': (form.controls.country.errors && form.controls.country.dirty) , 'is-valid': !form.controls.country.errors}" id="country" class="form-control" type="text" name="country" (autocomplete)="off" placeholder="Country" formControlName="country"/>
<ul class="help-block">
<li *ngIf="form.controls.country.errors?.required && form.controls.country.dirty">Required</li></ul>
</div>
</div>
<div class="form-group">
<label for="postalCode">Postal code</label>
<div class="col-5">
<input [ngClass]="{'is-invalid': (form.controls.postalCode.errors && form.controls.postalCode.dirty) , 'is-valid': !form.controls.postalCode.errors}" id="postalCode" class="form-control" type="text" name="postalCode" (autocomplete)="off" placeholder="Postal Code" formControlName="postalCode"/>
<ul class="help-block">
<li *ngIf="form.controls.postalCode.errors?.required && form.controls.postalCode.dirty">Required</li></ul>
</div>
</div>
<div class="form-group">
<label for="phone">Phone</label>
<div class="col-5">
<input [ngClass]="{'is-invalid': (form.controls.phone.errors && form.controls.phone.dirty), 'is-valid': !form.controls.phone.errors}" id="phone" class="form-control" type="text" name="phone" (autocomplete)="off" placeholder="Aantal kilometers" formControlName="phone"/>
<ul class="help-block">
<li *ngIf="form.controls.phone.errors?.required && form.controls.phone.dirty">Required</li></ul>
</div>
</div>
<input [disabled]="!form.valid || processing" type="submit" class="btn btn-primary" value="Submit" />
</form>
это моя функция CreateForm в `client.component.ts '
createForm() {
this.form = this.formBuilder.group(
{
company: ['', Validators.compose([
Validators.required,
Validators.minLength(5),
Validators.maxLength(35),
])],
addressLineOne: ['', Validators.compose([
Validators.required,
Validators.minLength(3),
Validators.maxLength(35),
])],
city: ['', Validators.compose([
Validators.required,
Validators.minLength(8),
Validators.maxLength(35),
])],
country: ['', Validators.compose([
Validators.required,
Validators.minLength(3),
Validators.maxLength(35),
])],
postalCode: ['', Validators.compose([
Validators.required,
Validators.minLength(3),
Validators.maxLength(35),
])],
phone: ['', Validators.compose([
Validators.required,
Validators.minLength(3),
Validators.maxLength(35),
])],
email: ['', Validators.compose([
Validators.required,
Validators.minLength(3),
Validators.maxLength(35),
])],
}
)
}
Почему говорится, что электронная почта не определена? Я не понимаю, я объявил об этом в formbuilder.group. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать