2017-01-12 8 views
0

Ich habe einen Toggle-Schalter. Ich möchte den Schalter zunächst nicht aktivieren oder deaktivieren. Um genau zu sein, wird toggle aktiviert oder deaktiviert, basierend auf einer Serverantwort, weshalb ich preventDefault verwenden muss.Ionic 2 Toggle preventdefault

ich verwendet habe ionChange() statt click() Event-Handler. Aber mit dem IonChange-Handler ist die abbrechbare oder defaultPrevented Eigenschaft nicht vorhanden. Also, es erhöht sich der Fehler preventDefault() ist keine Funktion. Mit einem einfachen Klick-Handler verursacht dies jedoch keinen Fehler, funktioniert aber auch nicht. Ich habe auch versucht mit stopPropagation().

Hier ist der Code.

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(); 
} 
} 
+0

hast du eine Lösung dafür gefunden? – ACES

Antwort

0

Was ist, wenn Sie das Toggle deaktivieren und es programmatisch ändern. Der Beispielcode wird die Ionen Toggle geprüft und ungeprüft alle 1500 ms

@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); 
    } 

} 
0

wechseln hatte ich das gleiche Problem, und das ist, wie ich es gelöst:

<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 
    ... 
} 

Sie müssen erklären isChecked als Boolean und geben Sie einen Wert in ngOnit oder Konstruktor, wenn Sie Ihren Server aufrufen. Ich hoffe, das hilft jemandem