我在 Angular 2 应用程序中为复选框使用引导开关。当您单击开关时,我希望LightNeeded
我的类中变量的值随之改变。我有以下代码:
HTML:
<input class="bootstrap-switch light-needed" name="LightNeeded" type="checkbox" [(ngModel)]="LightNeeded">
打字稿文件:
LightNeeded: boolean;
ngOnInit(): void {
// Invoke bootstrap switches
$('.bootstrap-switch').bootstrapSwitch({
onText: "Yes",
offText: "No"
});
this.changeBootstrapSwitchValues();
}
changeBootstrapSwitchValues() {
$('.light-needed').on('switchChange.bootstrapSwitch', function (event:any, state:any) {
if (state) {
console.log('true');
this.LightNeeded= true;
} else {
console.log('false');
this.LightNeeded= false;
};
});
}
当 switch 为 true 时,它成功地将 true 记录到控制台。当它为 false 时,它成功地将 false 记录到控制台。但是,它永远不会改变我的LightNeeded
变量的值。
当我将鼠标悬停在this
上时this.LightNeeded
,我收到以下警告:
可疑的“this”用法:在当前上下文中,“this”指的是本地函数,而不是包含类。
我怎样才能this
按照我的意图工作并更改LightNeeded
变量的值?我也愿意采取其他有意义的方法。我尝试添加[attr.checked]="LightNeeded? true : null"
到我的输入,但没有奏效。
编辑:
当它是一个简单的复选框时,添加的双向绑定[(ngModel)]="LightNeeded"
有效,但由于某种原因,引导开关插件破坏了双向绑定。JQuery Inputmask 和 JQuery UI Datepicker 等其他插件也打破了双向绑定。