2017-08-23 9 views
0

私はそれがこのように見えるが、それはブラウザ上で表示するときにも、その値があれば、すべてのチェックボックスをチェックし、私のテンプレートで今、このngModelバインドは、複数のチェックボックスでは動作しません

[{value: 6, name: "delete-wews", checked: false} 
{value: 5, name: "update-user", checked: false} 
{value: 4, name: "search-user", checked: true} 
{value: 3, name: "list-user", checked: false} 
{value: 2, name: "find-user", checked: false} 
{value: 1, name: "create-user", checked: true}] 

のように見えるデータを持っています偽です。 "チェックされた"キーが真であるかどうかをチェックする必要があります。それ以外の場合はfalseになります。

<div class="checkbox" *ngFor="let permission of permissions"> 
     <label> 
     <input type="checkbox" 
      name="permissions" 
      [(ngModel)]="permission.checked" 
      value="{{permission.id}}"> 
      {{permission.name}} 
    </label> 
</div> 

と私のコントローラコードあなたはその配列を反復するためngForを使用していて、すべてのアイテムに同じ名前の属性を設定しているので、この https://gist.github.com/eaponiente/cc108bfafb2789229e917283e0b8db09

+0

など、名前permissions0、permissions1、permissions2を行いますされ、これを試してみてください、あなたが本当の '権限' 配列内のIDキーを持っていますか?値が存在しないキーに設定されています – Vega

+0

質問に回答を入れないでください。答えに答えを入れる。 –

答えて

2

そのです。異なる値を保持するためには、それぞれ固有のものが必要です。

<div class="checkbox" *ngFor="let permission of permissions; let i = index"> 
    <label> 
    <input type="checkbox" 
     [name]="'permissions'+i" 
     [(ngModel)]="permission.checked" 
     value="{{permission.id}}"> 
     {{permission.name}} 
</label> 

+1

よくある間違いの1つは、ラジオ入力にはすべて同じ名前が必要だが、チェックボックスは必要ないという点です。 –

+1

はまた、チェックボックスのために特定のオブジェクトにビンビンしようとしている場合: 許可が[i]は –

+1

1最後の事を.checkedを...常に[値]を使用=、これは文字列のタイプを保持します「permission.id」 int、またはbooleanなど。 –

関連する問題