2017-01-26 10 views
0

ここで誰でもマルチ選択をバインドする方法を教えてもらえますか?私はカテゴリをforeachのと、選択したプロパティを追加します(編集フォームで)コードのこの部分を使用して、データベース(REST)からデータを取得:agnular2でマルチ選択オプションをバインドする

for (let i = 0; i < this.group.categories.length; i++) { 
        for (let j = 0; j < this.categories.length; j++) { 
         if (this.group.categories[i].id == this.categories[j].id) { 
          this.categories[j].selected = true; 
         } 
        } 
       } 

、テンプレートでは、これを持っている:

<label class="form-group"> 
          Select categories: 
          <select [(ngModel)]="group.categories" name="categories" class="form-control" required multiple> 
           <option *ngFor="let c of categories" value={{c.id}} [selected]="c.selected"> 
            {{c.title}} 
           </option> 
          </select> 
         </label> 

た場合、私はinspect要素では、その角度が選択された値に設定されていますが、選択された選択項目をユーザーに表示しませんでした。 私は何が間違っていますか?私はどんな種類の解決策も見つけられなかったので、あなたに尋ねます。あなたが私を助けてくれることを願っています。

+0

selectedプロパティには文字列型がありますが、コードではbooleanに設定します。 –

答えて

0

誰かが助けてくれることを願っています。

は、特定のオブジェクトを持っているカテゴリから配列を作成する必要があります。

let selected_categories = [].slice.call(this.group.categories).map(a => a.id); 

その後、グループオブジェクトに追加します。

this.group.categories = selected_categories; 

次にテンプレートでそれをバインドします

<select multiple name="categories" [(ngModel)]="group.categories" class="form-control" > 
          <option *ngFor="let c of categories" [value]="c.id"> 
           {{c.title}} 
          </option> 
         </select> 

そして、それは:)楽しむ:)

+0

'[value]'をフルオブジェクトに設定した場合、 '[value] =" c "'とすると、バインドするために何もする必要はありません。自動的にバインドされます。 – developer033

+0

それは私のように動作しません。 –

+0

さて、サーバーからフェッチしているデータはどのように表示されますか? – developer033

関連する問題