2016-01-21 1 views
2

J'essaie d'utiliser avec ngModel, mais ngModel ne fonctionne pas là. Mon code:Comment utiliser ngModel dans ion-checkbox?

<ion-checkbox *ngFor="#item of items" [(ngModel)]="item.checked"> 
    {{item.name}} 
</ion-checkbox> 

Mais je reçois une erreur:

EXCEPTION: Expression 'checked in [email protected]:2' has changed after it was checked. Previous value: 'false'. Current value: 'false' in [checked in [email protected]:2]

exemple données:

this.items = [ 
    {name: 'Dancing', checked: false}, 
    {name: 'Jazz', checked: false}, 
    {name: 'Metal', checked: true}, 
    {name: 'Pop', checked: false}, 
    {name: 'Rock\'n\'Roll', checked: false}, 
    {name: 'Folk Metal', checked: true} 
]; 
+1

Ce message d'erreur est pas liée à 'ngModel' mais' = "item.checked". Vous semblez modifier 'item.checked' d'une manière qui n'est pas compatible avec la détection de changement par défaut d'Angulars. S'il vous plaît fournir plus de détails sur la façon dont cela ressemble à votre code. –

+1

Vous semblez modifier les valeurs d'une manière inattendue. Ce n'est toujours pas assez d'informations. –

Répondre

3

Je ne suis pas familier avec <ion-checkbox>. Mais quand j'ai essayé de répéter votre histoire avec <input type="checkbox" />, je n'ai pas pu obtenir de succès en appliquant ngFor directement à input type="checkbox". Donc ce que j'ai fait, j'ai pris <ul><li *ngFor="#item of items" > et mis mon input type="checkbox" dedans et il a commencé à fonctionner comme prévu.

Je pense que MyAnswer pourrait vous aider.

ne fonctionne pas dans myCASE

<input type="checkbox" *ngFor="#item of items" [(ngModel)]="item.checked" />{{item.name}} 
/* I don't know some error occurs. you can check my plunkr by modifying it/*. 

a fonctionné correctement

<ul> 
     <li *ngFor="#item of items">{{item.name}} 
      <input type="checkbox" [(ngModel)]="item.checked" /> 
     </li> 
    </ul> 
+0

Oui, je pense que c'est la bonne façon d'utiliser ng-for. Dans la construction nocturne de Ionic sur les cases à cocher, ils l'enveloppent dans un conteneur aussi +1 –