2016-05-05 9 views
2

私はangle2(ベータ17)を使ったチェックボックスに奇妙な問題があります。Bind Click and changeチェックボックスangular2

要素と同じチェックボックスを設定しようとしていますが、配列があり、変更またはクリックイベントがバインドされています。例えば

私は配列を持っている:

myObjects=[ 
    {value:true}, 
    {value:true}, 
    {value:false}, 
    {value:true} 
]; 

そして、私はすべてのチェックボックスを作成するngForを使用しています:

<div *ngFor="let myObject of myObjects; let i = index" > 
    <input 
      type="checkbox" 
      [checked]="myObject.value" 
      (change)="updateCheckedOptions(i, $event)" 
    /> 
</div> 

そして最後に、私は私のコンポーネントで機能を持っている:

@Input() myObjects; 

updateCheckedOptions(index,event){ 
    this.myObjects[index].value=event.target.checked; 
} 

しかし、問題は、チェックボックスが変更されないということです。チェックボックスをクリックすると、初期状態がチェックされ、常にチェックされたままであり、逆も同様である。

(クリック)、(変更)、[(ngModel)]を試してみましたが、動作しません。

ありがとうございます!

+0

(http://plnkr.co/edit/SjIRhAwa56ScfrJDZml3?p=preview) 、それは正常に動作しています。私は 'オブジェクト'は予約語だと思うが。 – Abdulrahman

+0

訂正、私はちょうどチェックした、 'オブジェクト'は予約語ではありません。それはちょうど感じていない:) – Abdulrahman

+0

こんにちは、オブジェクト名は象徴的な名前だけです、私は他の名前で質問を編集して、 "myObjects"変数のタイプを追加しました。 ありがとう! –

答えて

1

あなたはngModelChangeを確認することができます:私はちょうどコピーして[plunker]でコードを貼り付け

//This is your component 
 

 
@Input() myObjects; 
 

 
myObjects=[ 
 
    {value:true}, 
 
    {value:true}, 
 
    {value:false}, 
 
    {value:true} 
 
]; 
 

 
updateCheckedOptions(index,event){ 
 
    this.myObjects[index].value=event.target.checked; 
 
    console.log(index + " ---- " + event); 
 
}
<div *ngFor="let myObject of myObjects; let i = index" > 
 
    <input 
 
      type="checkbox" 
 
      [checked]="myObject.value" 
 
      (ngModelChange)="updateCheckedOptions(i, $event)" 
 
    /> 
 
</div>

+0

Garbzadeこれは角度4の素材とネイティブhtmlでは動作しませんラジオのチェックボックスもオンにします。以下は私のコードです。{{<入力タイプ= "チェックボックス" [チェック] = "親チェック"(ngModelChange)= "listcheckboxchecked(リスト、$イベント)"> {{list.value}} {{list.value}}
[マッキントッシュチェックボックス] –