невозможно добавить один и тот же массив более одного раза с помощью addControl () в angular6 - PullRequest
0 голосов
/ 26 сентября 2018

Вот мой Json:

{"id":"","title":"","areas":[{"areaId":"","type":"","position":"","parts":[]}]}

Теперь я хочу добавить массив areas[] столько раз, сколько запросит пользователь, когда я использую другое имя Каждый раз, когда массив вставляется,например:

{"id":"","title":"","areas":[{"areaId":"","type":"","position":"","parts":[]}],"areas2":[{"areaId":"","type":"","position":"","parts":[]}],"areas3":[{"areaId":"","type":"","position":"","parts":[]}]}

Каждый раз, когда я хочу, чтобы имя арены было только областями.

вот мой код для добавления массива:

let areas = new FormArray([
    new FormGroup({
        areaId : new FormControl(''),
        type : new FormControl(''),
        position : new FormControl(''),
        parts : new FormArray([])
    })
]); 

this.form.addControl('areas', areas);

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Вы можете использовать get для создания экземпляра formArray и добавления в него новых элементов управления

, например,

в .ts

 formGropup = this.formBuilder({
      areas : this.formBuilder.array([])
    })

/*Initlaize formArray*/
    get areaCollection(): FormArray {
        return this.pecRegForm.get('areas') as FormArray;
    };

 /*Initlaize formcontrols*/
    createArea(): FormGroup {
        return this.fb.group({
            areaId : new FormControl(''),
            type : new FormControl(''),
            position : new FormControl(''),
            parts : new FormArray([])
        });
    }

    /* Here you can push new formGroup*/
    addMoreAreas() {
        this.censusCollection.push(this.createArea());
    }

in .html

<div class="col-md-4" *ngFor="let item of formGropup.get('areas').controls; let i = index;" [formGroupName]="i">
   <input formControlName="areas" type="text" placeholder="Id"> 
   <input formControlName="type" type="text" placeholder="Id">  
   <!-- and so on -->                           
</div>
0 голосов
/ 26 сентября 2018

Вы создаете новый массив форм каждый раз.Вы должны нажать, чтобы добавить новый элемент управления формы там.

const formGroup= new FormGroup({
        areaId : new FormControl(''),
        type : new FormControl(''),
        position : new FormControl(''),
        parts : new FormArray([])
    })

areas.push(formGroup);
...