情況
用戶可以單擊<md-slide-toggle>
。無論用戶何時將開關從true
滑動到false
,都應出現一個對話框,要求用戶確認其選擇。如果用戶點擊「取消」,而不是「繼續」,則切換應該滑回true
(或者,我希望在用戶面對對話之前切換不滑動的解決方案感興趣)。重置Md-Slide-Toggle如果用戶取消對話框
問題
當用戶選擇取消他們的決定,切換失敗,它綁定到模型一起更新。
TS
import { Component, Input } from '@angular/core';
@Component({
selector: 'toggle-parent',
templateUrl: 'toggle-parent.component.html'
})
export class ToggleParentComponent {
@Input() isChecked: boolean;
onToggle(): void {
WL.SimpleDialog.show('title', 'text',
[
{text: 'Cancel', handler:() => this.toggleReset()},
{text: 'Continue'}
];)
}
toggleReset(): void {
this.isChecked = !this.isChecked;
}
}
HTML
<md-slide-toggle
[(ngModel)]="isChecked"
(change)="onToggle()">
</md-slide-toggle>
問題
爲什麼不會滑塊恢復到之前的狀態,當我倒置的isChecked
值?不應該嗎?
如果這不是最好的辦法,那麼更好的方法是什麼?
編輯:根據要求
編輯2的對話框添加的代碼:我想我是有這個問題是與管理組件的3層。我沒有上傳我的所有代碼,但在實際實現中,我有一個組件來管理頁面,該頁面使用容器組件來保存滑動切換和使用md-slide切換的標籤。我試圖管理2路通過3層結合:
PageComponent - >的ContainerComponent - > MdSlideToggleComponent
當我拿出了中間層,雙向綁定工作。但是,使用3層,無論何時我會更改PageComponent上的isChecked,它只會更新ContainerComponent上的更改,並且不會再繼續下去。所以我的變化並沒有完全消失。這可能是造成整體問題的人爲錯誤。