Situation
L'utilisateur peut cliquer sur un <md-slide-toggle>
. Chaque fois que l'utilisateur glisse la bascule de true
à false
, une boîte de dialogue devrait apparaître demandant à l'utilisateur de confirmer son choix. Si l'utilisateur clique sur "Annuler", par opposition à "Continuer", la bascule devrait revenir à true
(sinon, je serais intéressé par une solution où la bascule ne glisse pas avant que l'utilisateur ne soit confronté à la boîte de dialogue).Réinitialiser Md-Slide-bascule si l'utilisateur annule dialogue
Problème
Lorsque l'utilisateur choisit d'annuler sa décision, la bascule ne parvient pas à mettre à jour à côté du modèle, il est lié.
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>
Question
Pourquoi ne le curseur revenir à son état précédent quand j'inverser la valeur de isChecked
? Ça ne devrait pas?
Si ce n'est pas la meilleure façon de procéder, quelle serait la meilleure approche?
Modifier: Ajout de code pour dialogue sur demande
Edit 2: Je pense que la question que je faisais était de gérer 3 couches de composants. Je n'ai pas téléchargé tout mon code, mais dans l'implémentation réelle, j'ai un composant pour gérer une page, qui utilise un composant conteneur pour contenir la bascule et une étiquette, qui utilise la commande md-slide-toggle. Je tentais de gérer 2 voies de liaison à travers 3 couches:
PageComponent -> ContainerComponent -> MdSlideToggleComponent
Quand je pris la couche intermédiaire, dans les deux sens liaison a fonctionné. Cependant, avec 3 couches, chaque fois que je changerais isChecked sur PageComponent, cela mettrait à jour le changement sur ContainerComponent seulement et il ne descendrait pas plus loin. Donc, mes changements ne l'ont pas fait complètement baisser. C'était probablement l'erreur humaine qui a produit le problème global.