Ionic2切换组件更改事件未触发

Dav*_*ave 17 events typescript ionic2 angular

我的应用程序渲染正常,但为什么change事件功能updateItem(item)不会被触发?

模板:

  <ion-list>
    <ion-item-sliding *ngFor="#item of items">
      <ion-item>
        <ion-label>{{item.title}}</ion-label>
        <ion-toggle [(ngModel)]="item.completed" (change)="updateItem(item)"></ion-toggle>
      </ion-item>
      <ion-item-options>
        <button primary (click)="editItem(item)">
          <ion-icon name="edit"></ion-icon>Edit
        </button>
      <button secondary (click)="deleteItem(item)">
        <ion-icon name="delete"></ion-icon>Delete
      </button>
      </ion-item-options>
    </ion-item-sliding>
  </ion-list>
Run Code Online (Sandbox Code Playgroud)

类:

export class Todos {
...
  updateItem(item) {
    alert(1)
    this._todosService.update(item).subscribe(
      response => { this.getItems(); }
    );
  }
... 
}
Run Code Online (Sandbox Code Playgroud)

小智 43

根据Ionic文档,您可以这样做:

<ion-toggle [(ngModel)]="item.completed" (ionChange)="updateItem(item)" checked="false"></ion-toggle>
Run Code Online (Sandbox Code Playgroud)

我希望这能帮到您!

  • ionChange应该在docs ionicframework.com/docs/v2/api/components/toggle/Toggle中提到 (4认同)

Gün*_*uer 6

更新

<ion-toggle [(ngModel)]="itemCompleted"></ion-toggle>
Run Code Online (Sandbox Code Playgroud)
export class Todos {
  get itemCompleted() {
    return item.completed;
  }
  set itemCompleted(value) {
    item.completed = value;
    updateItem(item);
  }

  ...
  updateItem(item) {
    alert(1)
    this._todosService.update(item).subscribe(
      response => { this.getItems(); }
    );
  }
  ... 
}
Run Code Online (Sandbox Code Playgroud)

原版的

[(ngModel)]="..."作品,这

(ngModelChange)="updateItem(item)"
Run Code Online (Sandbox Code Playgroud)

应该也可以正常工作,并且可能会完成您尝试完成的工作。