Группа форм , Массив форм

avatar
Asix
5 февраля 2020 в 01:52
63
2
1

У меня есть массив в машинописном тексте Angular

{
  "data": [
    {
      "name": "string",
      "description": "string",
      "chackboxes": [
        {
          "checkboxName": "string",
          "displayName": "string"
        }
      ]
    }
  ]
}

Я хочу создать массив форм внутри группы с именем флажка formcontrols. Что-то вроде этого -> FormArray[FormGroup[formControl, formcontrol], FormGroup[],]... поэтому я могу сначала пройтись по массиву, а затем по группам. И установите флажки.

Источник

Ответы (2)

avatar
Eliseo
5 февраля 2020 в 08:29
0

"разделяй и властвуй". Сделать функции, которые получили данные и вернуть FormGroup

getChackboxesGroup(data:any):FormGroup
{
    data=data || {
                   checkboxName:'',
                   displayName": ''
                  }
    return new FormGroup({
          checkboxName:new FormControl(data.checkboxName),
          displayName:new FormControl(data.displayName),
    })
}

getDataGroup(data:any):FormGroup
{
   data=data || { name: '',
                  description: '',
                  chackboxes:null
                }
   return new FormGroup({
       name:new FormControl(data.name),
       description:new FormControl(data.description),
       chackboxes:data.chackboxes?
           new FormArray(data.chackboxes.map(x=>this.getChackboxesGroup(x)):
           new FormArray([])
   })
}

Ну нужно только после получения данных

this.formArray=new FormArray(this.data.map(x=>this.getDataGroup(x))

Кроме того, если вы хотите добавить новый пустой элемент, вам нужно всего лишь

this.formArray.push(this.getDataGroup(null))

//or if you want to add a new checkboxes to the first element of the array
(this.formArray.at(0).get('chackboxes') as FormArray)
       .push(this.getChackboxesGroup(null)
avatar
Nathan Gabriel
5 февраля 2020 в 02:55
0