2016-08-09 9 views
0

TypeScriptで角度2を使用してアプリケーションを構築しています。私はその列の選択コントロールを含む次の表を持っています。選択制御内容が別の文字列配列にバインドされている - クラスタイプ{名:文字列、セクション:文字列}の目的である角2:テーブル内のすべての行でコンボボックスのオプションをプログラムで選択

<table ngControl="lstClasses" name="lstClasses"> 
     <tr *ngFor="let class of model.Classes"> 
      <td>{{class.Name}}</td> 
      <td> 
       <select name="cmbSection" [(ngModel)]="class.Section"> 
        <option *ngFor="let section of sections" 
         [ngValue]="section"> 
         {{section}} 
        </option> 
       </select> 
      </td> 
     </tr> 
    </table> 

のセクションでは、文字列[] = [「白」、「青」であり、 "紫色"、 "緑色"、 "赤色"]。

任意の行のコンボボックスで選択したオプションを変更すると、モデルに正しく反映されます。データを保存して更新すると、すべての行のすべての選択コントロールに、テーブルの最後の行に保存された選択されたオプションが表示されます。

例:表の最後の行で「紫」を選択して保存すると、データが最新表示されたときにモデルに正しいオプションが含まれていてもすべての行が選択されたオプションとして「紫色」と表示されます。

私が間違っているところでお手伝いできますか?

答えて

1

私はあなたが以下のようなものを探していると思いますが、ここで

<option *ngFor="let section of sections" 
        [value]="section" 
        [selected]="section == class.Section" 
        > 
        {{section}} 
</option> 

Plunker!!

は、この情報がお役に立てば幸いです!

+0

Madhuさんにお返事ありがとうございますが、この解決策は機能していません。問題は、ListコントロールまたはTableコントロール内でコンボコントロールを使用している場合です。それ以外の場合は正常に動作します。 – Raj

+0

@Raj:[Plunker](https://plnkr.co/edit/6Ffmm2lNazrtA66AO2ji?p=preview)を追加しました。これは同じシナリオですか? –

+0

はい、同じシナリオです。 Select文の中で[(ngModel)] = "class.Section"を使用すると問題が発生しているように見えます。これがなければ、元のオブジェクトから値を正しく読み取ることができますが、ターゲットオブジェクトの更新されたオプションは反映されません。 – Raj

関連する問題