2017-10-20 17 views
2

J'ai un composant de dialogue suivant (que j'ouvre en utilisant dialog.open (MyDialogComponent) dans un autre composant).Valeur de retour du dialogue de matériau angulaire

export class MyDialogComponent implements OnInit { 
    constructor(public matDialogRef: MatDialogRef<MyDialogComponent>) {} 

    ngOnInit() {} 
} 

Je sais que je peux retourner des données au composant appelant en exécutant matDialogRef.close (dataToReturn) lié à un bouton dans le composant de dialogue. Mais comment puis-je retourner les données si un utilisateur a cliqué ailleurs mais le popup pour le fermer?

Répondre

4

Si quelqu'un est intéressé, j'ai trouvé une solution (je ne sais pas si c'est la meilleure). Il suffit de désactiver l'opération de fermeture par défaut afin que le popup ne se ferme pas sur le clic backround, tout en le fermant avec le paramètre data sur le clic d'arrière-plan. De cette manière, le composant appelant reçoit les données, que la boîte de dialogue ait été fermée par un bouton ou cliquée ailleurs. Le composant appelant reçoit ainsi les données.

+0

Vous devez également vous abonner aux événements de clavier pour gérer la touche 'esc'. J'ai parcouru le code source et je ne vois pas vraiment une meilleure façon de le faire. Heureusement, le clic de fond et l'événement de raccourci 'esc' sont les deux seules choses qui doivent être réimplémentées pour obtenir la même fonctionnalité. –