Ionic 2 Toggle防止默认

时间:2017-01-12 17:44:06

标签: angular javascript-events ionic2

我有一个拨动开关。我想先不检查或取消选中切换。确切地说,将根据服务器响应检查或取消选中切换,这就是我需要使用preventDefault的原因。

我使用 ionChange()而不是 click()事件处理程序。但是使用ionChange处理程序时,可取消 defaultPrevented 属性不存在。因此,它会引发错误 preventDefault()不是函数。但是,使用简单的单击处理程序,它不会引发任何错误,但也不起作用。我也试过 stopPropagation()

这是代码。

HTML:

<ion-item>
            <ion-toggle [(ngModel)]="appliance.state" (ionChange)="applianceChange($event)"></ion-toggle>
</ion-item>

TS:

import { Component, EventEmitter } from '@angular/core';

@Component({
  selector: 'appliances',
  templateUrl: 'appliances.html'
})
export class ApplianceModule {
  constructor(){}

 applianceChange(event: Event){
   event.preventDefault(); 
 }
}

2 个答案:

答案 0 :(得分:0)

如果禁用切换并以编程方式更改它,该怎么办? 示例代码将每隔1500毫秒将离子切换切换为选中和取消选中

@Component({
  selector: 'my-page',
  template: `<ion-toggle #toggle disabled=""></toggle>`
})
export class MyPage implements OnInit {

  @ViewChild('toggle') ionToggle: Toggle;

  constructor() {
  }

  ngOnInit(){
    setInterval(() => {
      this.ionToggle._checked = !(this.ionToggle._checked);
    }, 1500);
  }

}

答案 1 :(得分:0)

我有同样的问题,这就是我解决它的方法:

<ion-item>
        <ion-toggle [(ngModel)]="isChecked" (ionChange)="applianceChange($event)"></ion-toggle>
</ion-item>

applianceChange(ev){
    if(ev._checked == this.isChecked){
        callAction();
    }
}

callAction(){
    ...
     this.appliance.state = this.isChecked //it's important to change value so it can react properly on ionChange
    ...
}

您需要将isChecked声明为布尔值,并在进行服务器调用时在ngOnit或构造函数中为其赋值。我希望这对某人有帮助