2016-07-26 4 views
3

こんにちは私は、コントロールグループと、ラジオボタンを作成するテンプレートのコントロール配列をループするコントロール配列を持っています。私は、異なるコントロールグループに属していて、異なる名前を持っていても、ラジオボタンをすべて選択することができます...ここでは、デンマークのプランナーデッキを作っていますhttp://plnkr.co/edit/jTMZUCj5JVFazlZo7e4W?p=preview(plunkerデモはベータ9です) [ngFormControl]それは完璧に動作します... 誰かが私にそれを実装する正しい方法を教えてくださいできますか?私が間違っているのどこangular2コントロール配列のラジオボタンの使用

ArrayData=['abhi','rahul']; 

ArrayControl=new ControlArray([]); 

constructor(fb: FormBuilder) { 

this.ArrayControl=new ControlArray([]); 

for(var i=0;i<this.ArrayData.length;i++){ 
    let myForm = fb.group({ 
    'Male': ['', Validators.required] , 
    'Female': ['', Validators.required] 
}); 

    this.ArrayControl.push(myForm); 
} 

} 

私はコントロール配列を作成していますどのようにこれは...私はテンプレートをループしています。このように

 <div *ngFor="#control of ArrayControl.controls;#i=index"> 
     <input type="radio" name="{{i}}" value="male" [ngFormControl]="control.controls['Male']"> Male<br> 
     <input type="radio" name="{{i}}" value="female" [ngFormControl]="control.controls['Female']"> Female<br> 
     <hr> 
    </div> 

... は、誰かが私に教えていただけますか?

+0

や新しい形のモジュールで結構です同じように? –

+0

新しいフォームモジュールは私にとっては大丈夫です... –

+0

@GunterZochbauerは新しいフォーム(RC-4)を使って@GunterZochbauerを実装すると上記の要件はうまくいきますか? –

答えて

4

更新

最終角度2リリースには適用されません。

これは、あなたが探しているものかもしれません:それは、古い形式のモジュールである必要はない

@Component({ 
    selector: 'my-app', 
    directives: [REACTIVE_FORM_DIRECTIVES],  
    template: ` 
<div class="ui raised segment"> 
    <h3>Select Gender</h3> 
    <form [formGroup]="form"> 
    <div formArrayName="arr"> 
     <div *ngFor="let item of arrayData; let i=index"> 
     <div>{{item}}</div> 
     <input type="radio" [formControlName]="i" value="male"> Male<br> 
     <input type="radio" [formControlName]="i" value="female"> Female<br> 
     <hr> 
     </div> 
    </div> 
    </form> 
    <div>data: {{form.value | json}}</div> 
</div> 

    ` 
}) 
export class AppComponent { 
    arrayData=['abhi','rahul']; 

    //gender = new FormControl('', [Validators.required]); 
    arr = new FormArray([]); 

    constructor() { 
    this.form=new FormGroup({ 'arr': this.arr }); 
    console.log(this.form); 
    for(var i=0; i < this.arrayData.length; i++){ 
     this.arr.push(new FormControl('', [Validators.required])); 
    } 
    } 
} 

Plunker example

+0

ありがとう@GunterZochbauer ...これは完全に動作します –

+0

バインディングはどこですか?ラジオボタンを追加することは常に有効です。ラジオボタンプロパティの「名前」としてインデックス(i)を使用するのは奇妙なことです。既存のデータに基づいて性別を設定する場所はどこですか?あなたはそれを完全に無効な値に設定して、ユーザに何かをクリックさせるようにしています。 ' –

+0

@ RickO'Shea以来導入された新しいフォームモジュールがあり、この答えを書いています。それ以前にラジオボタンはサポートされていませんでした。私は長い間、ラジオボタンを使用しておらず、それらをどのように使用するか心に知りません。それを実証する他のいくつかの答えがあるはずです。 –

関連する問題