Search code examples
angularangular8formbuilderformarrayformgroups

How to patch an array into formarray


 this.formgroup = formbuilder.group({
      ordering_data: formgroup.array([this.createOrder()]),
    });

  createOrder(): FormGroup {
    return this.fb.group({
      order: [null, [Validators.required]],
      section_menu_id: [null, [Validators.required]],
    });
  }

Api Result

[
  {
    "order": 0,
    "section_menu_id": 3
  },
  {
    "order": 1,
    "section_menu_id": 1
  },
  {
    "order": 2,
    "section_menu_id": 6
  },
]

I try to show all those data from api result on my form input. Can someone tell me how to patch the api result into formgroup. Thanks in advance


Solution

  • In my projects, I do something like this :

    const data = [
      {
        "order": 0,
        "section_menu_id": 3
      },
      {
        "order": 1,
        "section_menu_id": 1
      },
      {
        "order": 2,
        "section_menu_id": 6
      },
    ];
    
    constructor(private fb: FormBuilder) {}
    
    ngOnInit() {
      this.formgroup = this.fb.group({
        ordering_data: this.fb.array(this.data.map(item => this.createOrder(item))),
      });
    }
    
    createOrder(item?: any): FormGroup {
      return this.fb.group({
        order: [item ? item.order : null, Validators.required],
        section_menu_id: [item ? item.section_menu_id : null, Validators.required],
      });
    }