2016-12-18 6 views
2

角度結合モデルに問題があります。角度モデルの変更と二重拘束を同時に使う方法

私は2つのリスト(クラスと生徒)を持っています。学生の詳細ページで、私はしたい:

  1. 利用可能なすべてのクラスを提示する;
  2. 学生がすでに受けているクラスを「真」に切り替える。
  3. ユーザーがクラスを追加/削除できるようにします。

私は2か3のどちらでも問題はありませんが、私は両方を行うことはできません。

<ion-list *ngFor="let cls of listOfAllClasses"> 
    <ion-label>{{cls.name}}</ion-label> 
    <ion-toggle [(ngModel)]="cls.checked (ngModelChange)="pushClsToStudent(cls)"> 
    </ion-toggle> 
</ion-list> 

Javascriptを:

pushClsToStudent(cls) { 
    cls.checked? this.student.classes.push(cls) : this.student.classes.filter(c => c.classId !== cls.classId) 

問題は、それが二つの事象(1.(ngModel)2.(ngModelChane)角度火を作るということです。しかし、私はそれを回避する方法を知りません。 。

事前にどうもありがとうございます

答えて

2

まずNgModelディレクティブから()を削除します!

あなたが入力の値を変更するとき
<ion-toggle [ngModel]="cls.checked" (ngModelChange)="pushClsToStudent($event, cls)"> 

この方法では、ion-toggleの値がcls.checkedpushClsToStudent(cls)の値にバインドされますが発射されます。あなたがcls.checkedに新しい価値をキャッチし、割り当てるために、あなたのpushClsToStudent()さんに関数をeventパラメータを追加する必要があります。

pushClsToStudent(event: any, cls: any) { 
    this.cls.checked = event; 
    ... 
} 

注:

あなたはあなたが投稿したコードで"が欠落している、それがために、エラーが発生しますあなた:

[(ngModel)]="cls.checked || [(ngModel)]="cls.checked" 
関連する問題