Я перехожу на Angular 7 с Angular 5, и я обнаружил, что использование ngmodel и formcontrolName в одном и том же элементе устарело в Angular6 и удалено в 7. Теперь я не могу установить валидаторы на вход моей матрицы-микросхемы из углового материала
html:
<div class="form-group col-md-6">
<label class="required"> User Names
</label>
<mat-form-field >
<mat-chip-list class="form-control form-control-sm"
[ngClass]="{'is-invalid':form.controls.names.invalid && (form.controls.names.touched || form.controls.names.dirty) }"
#chipList3>
<mat-chip *ngFor="let local of form.get('names').value" [removable]="removable"
(remove)="remove_names(local)">
{{local}}
<mat-icon matChipRemove *ngIf="removable">cancel</mat-icon>
</mat-chip>
<input [matChipInputFor]="chipList3"
[matChipInputSeparatorKeyCodes]="separatorKeysCodes" [matChipInputAddOnBlur]="addOnBlur"
(matChipInputTokenEnd)="add_names($event)" />
</mat-chip-list>
</mat-form-field>
</div>
перед переходом на angular 7 Я бы просто использовал formControlName во входном теге, как этот
<div class="form-group col-md-6">
<label class="required"> User Names
</label>
<mat-form-field >
<mat-chip-list class="form-control form-control-sm"
[ngClass]="{'is-invalid':form.controls.names.invalid && (form.controls.names.touched || form.controls.names.dirty) }"
#chipList3>
<mat-chip *ngFor="let local of user.names" [removable]="removable"
(remove)="remove_names(local)">
{{local}}
<mat-icon matChipRemove *ngIf="removable">cancel</mat-icon>
</mat-chip>
<input [matChipInputFor]="chipList3"
formControlName="names"
[matChipInputSeparatorKeyCodes]="separatorKeysCodes" [matChipInputAddOnBlur]="addOnBlur"
(matChipInputTokenEnd)="add_names($event)" />
</mat-chip-list>
</mat-form-field>
</div>
Я делаю все свои пользовательские проверки, когда пользователь нажимаетимя в списке, но я хочу проверить, присутствует оно или нет для этого, я использую Validators.required, но теперь, так как я использую само значение formcontrol для отображения списка, я не могу дать ссылку на formControlName в шаблоне
TS:
user :FormGroup =this.fb.group({
names:[[], [Validators.required]],
id:0
});
Теперь, даже если в форме есть значения, которые он должен удовлетворять, Validators.required
Потратив время на исследования, я обнаружил, что добавление этого
this.form.controls['names'].updateValueAndValidity()
удовлетворен Validators.required, но теперь я получаю эту ошибку
Error: No value accessor for form control with name: 'names'