0

私はmd-selectmd-radio-buttonフィールドのフォームを持っています。ラジオボタンの下のオプションは、md-selectで選択されたオプションに従って表示されます。 plunkerにアクセスしてください。Angular2反応型:* ngIf内のフィールドを検証

私は、必要とされる副生物のラジオボタンフィールドを使用してフォームを作成したことがわかります。最初の負荷で動作します。しかし、任意のラジオボタンオプションを選択して生物選択ボックスを変更すると、フォームは有効なサブオルガニズム値を持たずに有効です。サブラジオボタンがチェックされていない場合は、フォームが無効である必要があります。助けてください。

質問2:plunkでは、app.component.tsの47行目以降の次の行のコメントを解除して、フィールドのデフォルト値があるようにしてください。サブ生物のラジオボタンが表示されますが、選択ボックスは空白になります。選択された値があり、サブ生物フィールドが表示される理由があります。生物がmd-selectに選択されていない理由はわかりません。

+3

質問2については、NgModelでFormControlを使用していることを示しています。これらは相互に排他的なものなので、1つだけ使用する必要があります。また、md-selectは、オブジェクト参照ではなくオブジェクト参照で値を比較することに注意してください。 –

答えて

1

選択の変更、およびフォームが検証された場合、あなたはnullselected.sub_organism_idの値をリセットできるようにします。md-selectchangeイベントを追加フォームが無効になります。

コードスニペット:

HTML:

<md-select [formControl]="form.controls['organism']" 
      style="width:100%;" 
      [(ngModel)]="selected.organism_id" 
      (change)="resetForm($event)"> 
    <md-option *ngFor="let organism_id of getIds()" [value]="organism_id"> 
    {{ organisms[organism_id].name }} 
    </md-option> 
</md-select> 

TS:

resetForm(org){ 
    if(this.form.valid){ 
    this.selected.sub_organism_id = null; 
    }; 
} 

Edited Plunk

更新:

@WillHowellのコメントのように、「md-selectはオブジェクト値ではなくオブジェクト参照による値を比較します。私はあなたのデータを配列 - オブジェクト関係に変更し、md-selectのデフォルト値はhereであった。

+0

返信いただきありがとうございます。最後のplunkerリンクはkey:objectの関係で同じものです。あなたが質問2を働かせることができないので、あなたが働くものを貼り付けることができるなら、それは素晴らしいでしょう。 – Jithin

+0

申し訳ありませんが、私は2番目の部分の正しいリンクを追加しました。どう考えているか教えてください – Nehal

関連する問題