3

次のようなキー値として配列を含む非常に複雑な json オブジェクトをバックエンドから取得しています。

[
  id: 1
  persons: [
    {
      name: 'Name',
      property: [ ..... ]
    }
    .........
  ]
]

このオブジェクトをリアクティブ フォームに入力する必要があります。したがって、私の ngOnInit 関数では、フォームを初期化し、サービスから配列データを取得します。次に、このデータを「convertToFormGroup」関数に渡して、単純なオブジェクトからこのネストされた FormArrays を作成します。この関数の問題は、これが 1 レベルの深さでしか機能しないことです。API は将来変更される可能性があり、FormArray 内に別の FormArray が必要になるのではないかと心配しています。これは完全に間違ったアプローチだと思いますか?そして、ネストされた配列を持つオブジェクトを、ネストされた FormArray を持つ FormGroup に変換する方が簡単なはずです。そのための既存の機能はありますか?私はAngularを初めて使用するので、躊躇しないで私を批判してください。

ngOnInit() {
  this.form = this.fb.group({
    data: this.fb.array([]),
  })

  this.service.getData().subscribe(data => {
    const convertedData = convertToFormGroup(data);
    (this.form.get('data') as FormArray).push(convertedData);
  });
}

private convertToFormGroup(object) {
  const newObj = {};
  Object.keys(object).map(key => {
    if (Array.isArray(object[key])) {
      newObj[key] = this.fb.array([]);
      for(const value of object[key]) {
        newObj[key].push(this.fb.group(value));
      }
    } else {
      newObj[key] = object[key];
    }
  });
  return this.fb.group(newObj);
}
4

0 に答える 0