2016-10-21 5 views
0

ngForループとリセットボタンから生成されるチェックボックスのリストがあります。リセットボタンをクリックすると、いずれかのチェックボックスがオンになっている場合、チェックボックスをオフにします。ここですべてのチェックボックスをオフにしましたAngular2

は私のhtml

<li *ngFor="let item of listItems" class="filter-list__item"> 
    <label class="filter-list__itemLabel"> 
     <input type="checkbox" value="{{item.id}}" [checked]="checked" /> 
     <span innerHTML="{{item.name}}"></span> 
    </label> 
</li> 
<button (click)="resetAll()"></button> 

答えて

5

であるあなたは、おそらくこのようなアイテムの状態にchecked属性をバインドします。

<li *ngFor="let item of listItems" class="filter-list__item"> 
    <label class="filter-list__itemLabel"> 
     <input type="checkbox" value="{{item.id}}" [checked]="item.checked" /> 
     <span innerHTML="{{item.name}}"></span> 
    </label> 
</li> 

<button (click)="resetAll()"></button> 

今、あなたは、リスト項目にアクセスし、以下れる偽

resetAll() { 
    this.listItems.forEach((item) => { 
    item.checked = false; 
    }) 
+0

アレイの各アイテムにチェック値を適用しない場合はどうなりますか? –

+0

次に、チェックされたすべての値を保持する別の配列を作成できます。 –

+0

@koningdavid '[checked]'は双方向データバインディングを実行できません。 '[(ngModel)]'は '[checked]'の代わりに最適な解決法です。 – Imran

0

私の解決策に値をリセットするために、あなたのコンポーネントにresetAll関数を作成することができ、それが魔法のように動作:

モーダルダイアログを使用しているとします。最善の方法は、それをonClose-Observableに登録することです。次に、基本となるリストを単純にそのクローンで上書きします。 Angluarはリスト全体を再ペイントするように強制され、すべてのダニを自動的に削除します。

モーダルダイアログを使用していない場合は、上書き処理をトリガするメソッドを実装するだけです。

関連する問題