Angular Ionic2离子切换在ionChange上获取值

Angular Ionic2离子切换在ionChange上获取值,angular,typescript,ionic-framework,ionic2,ionic3,Angular,Typescript,Ionic Framework,Ionic2,Ionic3,我在这里有一个切换: <ion-toggle (ionChange)="notify(value)"></ion-toggle> 当我点击这个按钮时,我想调用notify方法,通过参数传递切换值。如何获得切换值 谢谢大家! 有两种检查方法 第一个就像@Chathuranga Silva建议的那样 html ts var isToggled: boolean = true; notify() { console.log("toggled: "+ this.is

我在这里有一个切换:

<ion-toggle (ionChange)="notify(value)"></ion-toggle>

当我点击这个按钮时,我想调用notify方法,通过参数传递切换值。如何获得切换值


谢谢大家!

有两种检查方法

第一个就像@Chathuranga Silva建议的那样

html

ts

var isToggled: boolean = true;

notify() {
  console.log("toggled: "+ this.isToggled); 
}
notify(event:any){console.log(“切换:+event.target.checked);}

第二个是这样的:

html

ts

var isToggled: boolean = true;

notify() {
  console.log("toggled: "+ this.isToggled); 
}
您可以选择哪一个,我推荐第二个,因为在构造函数/onInit中操作切换更容易,在
notify()
方法之外使用此值也更容易。

就像您在,更好的方法是使用ngModel将切换绑定到组件中的属性

组件代码:

public isToggled: boolean;

// ...

constructor(...) {
  this.isToggled = false;
}

public notify() {
  console.log("Toggled: "+ this.isToggled); 
}
视图:


这样,您就不需要发送值,因为它已经是组件中的一个属性,您可以使用
This.isToggled
随时获取该值

更新

就像他在评论中提到的那样:

当ionChange直接绑定到
ngModel
时,要非常小心。当绑定到
ngModel
的值发生变化时,notify方法将被调用,无论是通过某人单击切换从视图中调用,还是通过代码在组件中调用,例如,当您执行新的get调用时。我最近遇到了一个问题,点击切换触发了一个
补丁
,这意味着当绑定到切换的数据发生变化时,其他所有客户端都会自动触发一个
补丁

我们使用:
来解决这个问题


您可以在ionChange中使用

视图:

<ion-toggle (ionChange)="notify($event)"></ion-toggle>
用这个

<ion-toggle id="availabilityButton" [(ngModel)]="setOffOrnot"
(ionChange)="setAvailability()"></ion-toggle>

setAvailability(e) {
  this.setOffOrnot = ...
}

设置可用性(e){
this.setOffOrnot=。。。
}

尝试notify($event),然后在函数中
notify(event:any){console.log(event.target.value);}
谢谢@sebafereras,这很有帮助!这很有效,谢谢,您也可以从[(ngModel)]中删除圆括号。当它直接绑定到
ngModel
时,请小心使用
ionChange
。当绑定到
ngModel
的值发生变化时,
notify
方法将被调用,无论是通过某人单击切换从视图中调用,还是通过代码在组件中调用,例如,当您执行一个新的
get
调用时。我最近遇到了一个问题,点击切换触发了一个
补丁
,这意味着当绑定到切换的数据发生变化时,其他所有客户端都会自动触发一个
补丁
。我们使用
来解决这个问题。谢谢@GFoley83我已经在答案中添加了您的评论:)我使用(单击)从.ts文件中的ion toggle获取ngModel值,但它有时会随机错误启动。但是,更改为(ngModelChange)后,问题就解决了。感谢爱奥尼亚5中未定义的
,这在最新版本中无效。结合使用ngModel和onChange。或者使用event.currentTarget.checked。
<ion-toggle id="availabilityButton" [(ngModel)]="setOffOrnot"
(ionChange)="setAvailability()"></ion-toggle>

setAvailability(e) {
  this.setOffOrnot = ...
}