У меня есть массив продуктов, которые я возвращаю на объект, который выглядит так:
{"opportunityId":2, "customer":"Graham's Motors",..."products":[{"id":1,"name":"Optoin 1","selected":false},{"id":2,"name":"Option 2","selected":false},{"id":3,"name":"Option 3","selected":true},...
У меня есть машинописный файл, который импортирует:
import { FormControl, FormGroup, FormArray } from '@angular/forms';
и я создаю FormGroup следующим образом:
opportunityForm = new FormGroup({
partner: new FormControl(''),
customer: new FormControl(''),
...
products: new FormArray([])
Я использую вызов API для заполнения данных, когда они извлекаются следующим образом:
this.dataService.getOpportunity(this.id)
.subscribe(data => {
this.opportunityForm.setValue({
partner: data.partner ?? '',
customer: data.customer ?? '',
...
});
data.products.forEach(product => {
(<FormArray>this.opportunityForm.get('products')).push(new FormControl(product));
});
который, я думаю, правильно помещает продукты в виде массива форм. Моя проблема заключается в том, как построить html. В настоящее время это выглядит так:
<div class="col" formArrayName="products">
<div *ngFor="let option of products; index as i" >
<label>
<input type="checkbox"
name="option.name"
value="{{option.value}}"
[formControlName]="i"
[checked]="option.selected"
(change)="option.selected = !option.selected"/>
{{option.name}}
</label>
</div>
</div>
Я получаю сообщение об ошибке:
ОШИБКА Ошибка: необходимо предоставить значение для управления формой с именем: «продукты».
Но я не вижу, что я делаю неправильно. Спасибо за любую помощь. Я просто хочу показать список флажков, если они уже были выбраны (есть форма редактирования), а затем разрешить пользователю обновлять их, прежде чем они отправят форму обратно.
formArrayName="products"
должно бытьformArrayName="opportunityForm.products"
- person Rachid Oussanaa   schedule 08.06.2020opportunityForm
в вашем компоненте? - person Rachid Oussanaa   schedule 09.06.2020