48

formで作成されたAngularには次のものがありますFormBuilder

constructor(private fb: FormBuilder) {
  this.myForm = fb.group({
      'name': ['', [Validators.required],
      'surname': ['', [Validators.required],
      'email': ['', [validateEmail]],
      'address': fb.group({
          'street': [''],
          'housenumber': [''],
          'postcode': ['']
      }, { validator: fullAddressValidator })
  });
}

FormControlや newなどの新しいフィールドFormGroupをプログラムで追加する方法はありますmyFormか?

必要に応じて、またはいくつかの条件で新しいフィールドを追加したい場合、最初に作成された同じフォームにアイテムを追加する方法はconstructor?

4

4 に答える 4

66

ドキュメントに従って FormGroupクラスaddControlのメソッドを使用できます

したがって、以下のようにすることができます:

this.myForm.addControl('newcontrol',[]);
于 2017-01-11T10:29:58.943 に答える
10

私の意見では、この目的のために中間変数を使用できます。次の例を見てください。

  constructor(private fb: FormBuilder) {
    let group = {
      'name': ['', [Validators.required]],
      'surname': ['', [Validators.required]],
      'email': ['', [Validators.required]]
    };

    let middlename = true;

    if(middlename) {
      group['middlename'] = ['', [Validators.required]];
    }

      this.myForm = fb.group(group);
    }

また、コンポーネント コンストラクターの代わりに、フォーム開始を ngOnInit フックで転送することをお勧めします。

于 2017-01-11T12:05:55.253 に答える
2

同じ問題がありましたが{}、メインの FormGroup 内に既に空の FormGroup があるため、次のように FormControls を追加できました。

(this.myForm.get("form_group_name") as FormGroup).addControl("item1", new FormControl("default val"));
于 2020-11-17T19:02:39.530 に答える