2017-09-29 2 views
2

jsonデータからフォームコントロールを動的に生成して使用しようとしています。私が適用する必要がある力学を理解するために思い描いた簡単な実験は次のようになります。今demoCの値が角度2の1つのプロパティバインディング内に2つの変数をバインドする方法はありますか?

demoC: {name:'', city:'', state:''} 

によるものでdemoAdemoBからプロパティをつかみ、FomControl S

loadStuff(){ 
    let a = this.demoA; 
    let b = this.demoB; 
    let ab: Array<string> = []; 

    ab.push(a); 
    b.forEach(bb => {ab.push(bb)}); 
    console.log(ab); 

    ab.forEach(ctrl => this.demoC.addControl(ctrl, new FormControl(''))); 

    console.log(this.demoC.value); 
} 

に変換するためのクラス

demoA: string   = 'name'; 
demoB: Array<string> = ['city', 'state']; 
demoC: FormGroup  = new FormGroup({}); 

関数で定義され

変数事実そのもの私のコンポーネント負荷が、私はこの

<input type="text" [(ngModel)]="demoC.{{demoA}}" /> 
のような入力何かに結合内のそれに特異的に結合することができるかどうか疑問に私を導いた私がそれに結合するための事前に定義された方法、ありませんときtは私がその場でこれを作成しています 動作しませんでした当然の

、どちらも私は結果は私がこれをやって行くにはどうすればよいdemoC.nameになりたい場合は

<input type="text" [(ngModel)]="demoC.[demoA]" /> 

<input type="text" [(ngModel)]="demoC.[(demoA)]" /> 

<input type="text" [(ngModel)]="demoC.(demoA)" /> 

<input type="text" [(ngModel)]="(demoC)+'.'+(demoA)" /> 

<input type="text" [(ngModel)]="[(demoC)+'.'+{{demoA}}]" /> 

<input type="text" [(ngModel)]="('demoC.'+{{demoA}})" /> 

<input type="text" [(ngModel)]="['demoC.'+{{demoA}}]" /> 

<input type="text" [(ngModel)]="['demoC.'+[demoA]]" /> 

<input type="text" [(ngModel)]="[('demoC.')+[demoA]]"> 

をしましたか?

答えて

1

なぜ{{}}の構文ですか? 動的プロパティの場合は[(ngModel)]=demoC[demoA]の構文を使用して簡単にバインドできます。しかし、あなたはここで2つのアプローチを混ぜ合わせました。アプローチ対Reactive Formアプローチ。 FormGroupと作業したい場合は、ngModelの代わりにFormControlNameディレクティブを使用する方が良いと思います。または、ngModelを使用する場合は、FormGroupを使用する必要はありません。

+0

最終的には私が作ったアンケートコンポーネントに角度のあるフォームを適用するための成功した方法の周りを包み込んでいます。https://plnkr.co/edit/nBpriDOgC88Fo2WMpM6A?p=previewのサンプルを見ることができます私にとって挑戦的なことは、Angular Formsで見られるすべてが、ハードコードされたフォームで作業し、そこから反復することです。私のplunkrの仕組みを見て、ユーザーが選択した回答に基づいて複数のオプションの質問を利用できる場合は、その場でダイナミックに作成できるようにする理由と、 ..... – Optiq

+0

これは基本的には、ユーザーにすべての質問が当てはまる状況がないため、60%完了しているに過ぎません。それはそれらに合っている。その結果、私は単にどちらが応答を収集する有効な手段を提供しているのかを発見しようとしています。私が適切なロジックを持っているため、フォームデータと一緒に渡す必要がある「非フォーム」データがたくさんあります。 – Optiq

関連する問題