내 Angular 2 애플리케이션의 확인란에 부트 스톱 스위치를 사용하고 있습니다. 스위치를 클릭하면 내 클래스의 변수 LightNeeded
의 값을 변경해야합니다. 나는 다음과 같은 코드가 있습니다 :각도 2 : 변수의 값이 변경되지 않는 부트 스트랩 스위치
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;
};
});
}
스위치가 true 인 경우, 성공적 콘솔에 충실 기록합니다. false이면 콘솔에 false를 성공적으로 기록합니다. 그러나 내 LightNeeded
변수의 값을 절대로 변경하지 않습니다.
의심 '이'사용 :
내가
현재 상황에서이 '이'가 아니라 포함하는 클래스로, 로컬 기능을 말합니다.this.LightNeeded
의this
동안, 나는 다음과 같은 경고 얻을 가져
어떻게 내가 의도하고있는 방식으로 작동하고 내 LightNeeded
변수의 값을 변경 this
을받을 수 있나요? 나는 다른 접근 방식을 택하는 것에 대해서도 개방적이다. 입력에 [attr.checked]="LightNeeded? true : null"
을 추가하려고 시도했지만 작동하지 않았습니다.
편집 : 그것은 간단한 확인란이 때
[(ngModel)]="LightNeeded"
을 추가하는 바인딩 양방향 작동했지만 어떤 이유로 부트 스트랩 스위치 플러그인이 양방향 바인딩을 나누기. JQuery Inputmask 및 JQuery UI Datepicker와 같은 다른 플러그인도 양방향 바인딩을 중단합니다.
값은 요소의 양방향 바인딩으로 변경됩니다. –
그래야하지만 그래야합니다. 단순한 체크 박스 일 때 작동했지만, 부트 스트랩 스위치를 구현하자마자 양방향 바인딩이 끊어졌습니다. – Brett
[TypeScript 및이 컨텍스트 검색]의 가능한 복제본 (http://stackoverflow.com/questions/33791128/typescript-and-this-context-detection) – Fiddles