2016-11-15 9 views
2

私は複数のコンポーネントにネストされた反応的なフォームを構築しようとしています。 は、私はどこにでもこのような何かを探していましたbeed:子要素にフィールドと値が入力される反応形式を作成しますか?

  • 親コンポーネント:トップ1はは、親コンポーネント内にある<form [formGroup]="form" novalidate>
  • 子供の成分が含まれています。フォームのformGroupNameに* ngForループが含まれています。
  • grandChildrenのコンポーネントは、子コンポーネント内にあります。フィールドと値は(formControlName)です。

私は予想通り、親コンポーネントでthis.form.valueChangesは、変更上のデータを仕事とreporteする必要があります。

私は各コンポーネントに必要なデータを取得したいと思います。私の場合、フィールドとデータはFirebaseから来ます。

このようなものは何も見つかりませんでした。古典的な住所配列を持つコンポーネントに組み込まれているフォームのみが存在します。フォームは常にParentComponentに組み込まれています。

質問:子供のコンポーネントにフィールドと値が入力されるフォームを作成することは可能ですか?

form.component.ts

<form [formGroup]="form" novalidate> 
    <form-fieldset [form]="form"></form-fieldset> 
</form> 

フォームfieldset.component.ts

<div [formGroup]="form"> 
    <fieldset *ngFor="let group of groups$ | async"> 
    <form-values [formGroupName]="group.name" [form]="form"></form-values> 
    </fieldset> 
</div> 

フォームvalues.component.ts

<ul [formGroup]="form"> 

    <li *ngFor="let value of values$ | async"> 
    <label> 
     <input type="checkbox" [formControlName]="value.$key"> 
     {{value.$key}} 
    </label> 
    </li> 

</ul> 
+0

私が理解していることから、これを行う唯一の方法はControlValueAccessorを使用することです。そして、私はそれを簡単にするために3の代わりに2つのコンポーネントにする必要があります。私はチェックボックスだけを使用することを知って、これに関する任意のアドバイスですか? – Tom

答えて

1

私の解決策を見つけましたthere。 子コンポーネントでinitの値を移動するだけで済みます。

関連する問題