Передача данных в группе угловых форм

#angular

Вопрос:

У меня есть угловые реактивные формы и массив данных. Я хочу передать один из массивов данных в этой форме. группа форм

 this.paiement = this.ajp.group({
  nbrmois: ['', [Validators.required]],
  mantant: [''],
  idUser: [''],
  paiementTime: ['']
})
 

Массив данных

   this.nbrs = [
          {
            nom: '3 mois',
            prix: 200,
            dis: '0 %',
            valueq: 3
          },
          {
            nom: '6 mois',
            prix: 540,
            dis: '10 %',
            valueq: 6
          },
        ]
 

Я пробовал с 'nbrmois: [this.nbrs.valueq.value, [Validators.required]] , но не работает

Комментарии:

1. nbrmois: [this.nbrs[0].valueq, [Требуются валидаторы.]], …….. у вас есть массив, поэтому вам нужно использовать индекс массива, элемент ведьмы, который вы хотите показать. Если вы хотите показать все элементы в массиве, вам нужно использовать элемент FormArray


Ответ №1:

Если вы спрашиваете: «Могу ли я обновить FormArray с помощью исправления или при инициализации», ответ отрицательный. Вам нужно перебрать свою коллекцию и нажать группы форм, чтобы решить эту проблему.

 nbrs = [
  {
    nom: '3 mois',
    prix: 200,
  }
]
nbrmoisArray = new FormArray([])
form = new FormGroup({
  nbrmois: this.nbrmoisArray
})
this.nbrs.forEach(x => {
  const {nom, prix} = x;
  this.nbrmoisArray.push(new FormGroup({
    nom: new FormControl(nom),
    prix: new FormControl(prix)
  })
}
 
 <div [formGroup]="form">
  <div formArrayName="nbrmois">
    <div *ngFor="let group of nbrmoisArray.controls; let i = index">
      <div [formGroupName]='i'>
        <input formControlName="nom" />
        <input formControlName="prix" />
      </div>
    </div>
  </div>
</div>