2017-06-04 13 views
3

新しいデータをプッシュするとき、私は反応性形の配列として設定してい反応性フォームの設定した更新:ngForない

<form *ngFor="let type of typesForms; let i = index" [formGroup]="typesForms[i]" class="row"> 
:私のhtmlの貫通私はループ

typesForms: FormGroup[] = []; 

しかし、新しいフォームをプッシュすると、HTMLは更新されません。

this.typesForms.push(this.formBuilder.group({ 
    type: { value: data['type'], disabled: true } 
})); 

私は結果のデータをログアウトしましたが、新しいフォームオブジェクトを表示しますが、フロントエンドには何も表示されません。私はこれに反応型のフォームと関係があると思っていますが、他に何かをねじ込んでいるかどうかはわかりません。

+0

あなたのタイプは、typesフォームではなく、タイプに対して反復処理を行います。したがって、typesFormsに要素を追加しても何も変更されません。 –

+0

おっと、それは単にタイプミスです。私はいくつかのものをテストしていて、誤ってテストコードをコピーしました。質問を修正する。 – RhoVisions

答えて

1

<form *ngFor="let type of typesForm" [formGroup]="type" class="row">を試しましたか?


更新:

あなたが複数のフォームを持っている場合は、角度の内蔵FormArrayデータ構造を利用することができます。フォームグループの操作を簡単にします - 変更内容を簡単に追跡し、リンクされたFormGroupFormControlの妥当性を検証することができます。

Punkr example

注:あなたが望むようReactiveFormsModuleフード下構造のものは、あなたがFormArray秒、FormGroup sおよびFormControl Sを構成することができる方法のおかげ:

  • あなたがフィールドとしてFormArrayを持つことができますaはFormGroup
  • FormArrayであり、FormArrays、FormGroupsおよびFormControl s
+0

私は、フォームとやりとりするためのインデックスが必要なので、私が知らない別の方法がない限り、そうしませんでした。私はそれが役立つかどうかを試してみるつもりですが、私は個々のフォームとやりとりするために他の方法を調べる必要があります。 – RhoVisions

+0

私はこの[plunkr](https://plnkr.co/edit/GPRvGZrLQYWdJ9zVouQy)で、[Form Array](https://angular.io/)で複数のフォームグループをインスタンス化して制御できる例を示しましたdocs/ts/latest/api/forms/index/FormArray-class.html) – embarq