Для отображения ответа API на файл шаблона я использовал реактивные формы. Мое требование к проекту состоит в том, чтобы, если ответ API содержал некоторые данные, отображал их, и я тоже мог добавлять динамические данные, и все эти данные должны храниться в БД. Если ответ API пуст, то я тоже могу добавить динамические данные, которые также будут храниться в БД.
Используется массив форм и следующий мой код:
ts файл:
orderForm: FormGroup;
items: FormArray;
ngOnInit() {
if(this.data.data && this.data.data.length) {
this.orderForm = this.formBuilder.group({
items: this.formBuilder.array([ ])
})
this.setCheckBoxValue()
}
else {
this.createBlankItem();
}
}
setCheckBoxValue() {
this.items = this.orderForm.get('items') as FormArray;
this.data.data.forEach((element) => {
this.items.push(this.formBuilder.group({
checked: element,
selected: true
}))
});
}
createBlankItem(): FormGroup {
return this.formBuilder.group({
checked: '',
selected: false
})
}
removeDynamicCheckBox(i) {
this.items.removeAt(i);
}
addDynamicCheckBox() {
this.items = this.orderForm.get('items') as FormArray;
this.items.push(this.createItem());
}
файл шаблона:
<div [formGroup]="orderForm">
<div formArrayName="items" *ngFor="let item of orderForm.get('items').controls; let i=index">
<div class="row" [formGroupName]="i">
<div class="col-lg-1 col-md-1 col-sm-1 col-xs-1">
<mat-checkbox [formControl]="item.controls.checked.value" class="ml-a" [checked]="item.controls.selected.value">
</mat-checkbox>
</div>
<div class="col-lg-10 col-md-10 col-sm-10 col-xs-10">
<mat-form-field
floatPlaceholder="never" class="margin-top-25px example-full-width" >
<input
matInput
class="input"
value="{{item.controls.checked.value}}"
>
</mat-form-field>
</div>
<!-- <div class="col-lg-1 col-md-1 col-sm-1 col-xs-1">
<a href="" (click)="removeDynamicCheckBox(i)">X</a>
</div> -->
</div>
</div>
</div>
<div class="row">
<button mat-raised-button (click)="addDynamicCheckBox()">Add</button>
</div>
Я получаю то, что хочу, но в консоли я получаю эту ошибку:
ОШИБКА TypeError: Невозможно создать свойство 'validator' для строки
Пожалуйста, помогите мне.