2017-02-27 8 views
1

私は、オブジェクトの配列フォーム内でチェックボックスが機能しないのはなぜですか?

pets = [{key: 'dog', isChecked: true}, {key: 'hamster', isChecked: false}, {key: 'cat', isChecked: false}]; 

を持っているとチェックボックス

<div *ngFor='let pet of pets'> 
    <input type='checkbox' 
    name='pets' 
    value='{{pet}}' 
    [(ngModel)]='pet.isChecked' 
    (change)='check()' 
    /> 
    {{pet.key}} - {{pet.isChecked}} 
</div> 

のようにそれを表示しますが、すぐに私は、フォーム

<form> 
    <div *ngFor='let pet of pets'> 
     <input type='checkbox' 
     name='pets' 
     value='{{pet}}' 
     [(ngModel)]='pet.isChecked' 
     (change)='check()' 
     /> 
     {{pet.key}} - {{pet.isChecked}} 
    </div> 
</form> 

の内側にそれを置く作業を開始ように、それは正しく表示され停止します。

フォームでこの作業を行うにはどうすればよいですか?

Plunkr link

Plunkr link with a form

+1

あなたが直面し始めた何の問題、嘆願eより良い理解のためにplnkrまたはjsfiddleを作成してください。 – Viplock

+0

@Viplock質問を更新しました。 –

+3

'input.name'プロパティは一意でなければなりませんhttps://plnkr.co/edit/6qgA1wnJOWgZUP0BGBmb?p=preview – yurzui

答えて

1

HTML:

<form> 
     <div *ngFor='let pet of pets'> 
      <input type='checkbox' 
       name='pets' 
       id="pets{{getRandom()}}" 
       [ngModel]="pet.isChecked" 
       value='{{pet}}' 
       (click)="$event.stopPropagation(); check();"/> 
      {{pet.key}} - {{pet.isChecked}} 
     </div> 
    </form> 

TS:

function getRandom() { 
    return Math.random() * 1000; 
} 
関連する問題