1

J'ai suivi le https://material.angular.io/components/dialog/overview officiel où il est dit que si le composant de dialogue lui-même doit être fermé, nous devons injecter la référence MdDialogRef comme ci-dessous et ensuite fermer un événementMdDialogRef.close ne ferme pas la boîte de dialogue lors d'un rappel fn

export class LoginDialogComponent { 
    constructor(public dialogRef: MdDialogRef<LoginDialogComponent>, 
     @Inject(MD_DIALOG_DATA) public data: any, public afAuth: AngularFireAuth, private router: Router) { 
    } 

    closeDialog(): void { 
    this.dialogRef.close(); 
    } 

    signInWithGoogle() { 
    const self = this; 
    this.afAuth.auth 
     .signInWithPopup(new firebase.auth.GoogleAuthProvider()) 
     .then(res => { 
      self.closeDialog(); 
     }); 
    } 
} 

En cas de succès de Google OAuth, je vois que closeDialog() est appelée. Cependant, la boîte de dialogue n'est pas fermée. [Je n'ai aucun problème à fermer le dialogue dans le cadre de setTimeOut/UserAction]

Répondre

0

Je ne suis pas sûr que ce soit lié mais j'ai eu le même problème et j'ai suivi le fait que j'avais un formulaire dans ma boîte de dialogue et que j'utilisais ngModel pour dual liant dans mes entrées mais l'objet auquel je me liais était indéfini. Ci-dessous, si cette entrée est dans la boîte de dialogue, si data.media.i18n.en.title est indéfini, il n'y aura pas d'exception dans la console et le mdDialog ne se fermera pas.

<input id="title" name="title" [(ngModel)]="data.media.i18n.en.title"> 

Alors avant d'ouvrir ma boîte de dialogue I avait pour initialiser correctement cet objet:

// before opening the dialog, initialize the variable 
if (typeof media.i18n === 'undefined') { 
    media.i18n = { 
    fr: { 
     title: '' 
    } 
    }; 
} 

let dialogRef = this.dialog.open(EditMediaDialogComponent, { 
    data: { 
    media: media 
    } 
}); 

Vous pouvez tester ici que: https://plnkr.co/edit/95atm4PIeKvyorVkcD0f?p=preview

Ce plnkr échoue. Si vous voulez le corriger, définissez animal.name avant d'ouvrir la boîte de dialogue.

En outre, en cas d'échec, vous pouvez voir qu'il n'y a pas d'animation dans la boîte de dialogue.

Vous n'êtes pas sûr que ce soit votre cas car vous n'avez pas publié beaucoup de code.

+0

Mine est un autre, j'essaie de fermer la boîte de dialogue «sur un événement de rappel». Comme mentionné, je n'ai pas de problèmes d'ouverture/fermeture sur l'action d'entrée de l'utilisateur. – nsk