1

Ich folgte offiziellen https://material.angular.io/components/dialog/overview, wo es besagt, dass, wenn die Dialogkomponente selbst geschlossen werden muss, wir MdDialogRef Referenz wie unten und dann schließen auf ein EreignisMdDialogRef.close schließt den Dialog nicht beim Aufruf von einem Callback 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(); 
     }); 
    } 
} 

Nach erfolgreicher Antwort von Google OAuth, sehe ich, dass closeDialog() aufgerufen wird. Der Dialog ist jedoch nicht geschlossen. [Ich habe keine Probleme schließen Dialogfeld als Teil von SetTimeOut/UserAction]

Antwort

0

Nicht sicher, es ist verwandt, aber hatte das gleiche Problem, und ich fand es auf die Tatsache, dass ich ein Formular in meinem Dialogfeld hatte und ich war mit ngModel für Dual Bindung in meinen Eingaben, aber das Objekt, an das ich mich gebunden habe, war undefiniert.

Wenn diese Eingabe im Dialogfeld unten ist, wenn data.media.i18n.en.title undefiniert ist, gibt es keine Ausnahme in der Konsole und der mdDialog wird nicht geschlossen. So

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

vor meinem Dialog zu öffnen hatte ich das richtig, das Objekt zu initialisieren:

// 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 
    } 
}); 

Sie, dass hier testen: https://plnkr.co/edit/95atm4PIeKvyorVkcD0f?p=preview

Das plnkr versagt. Wenn Sie es korrigieren möchten, definieren Sie animal.name, bevor Sie den Dialog öffnen.

Wenn es fehlschlägt, können Sie auch sehen, dass keine Animation im Dialogfeld vorhanden ist.

Nicht sicher, dass es Ihr Fall ist, da Sie nicht viel Code veröffentlicht haben.

+0

Mine ist eine andere, ich versuche, den Dialog 'bei einem Callback-Event' zu schließen. Wie bereits erwähnt, habe ich keine Probleme beim Öffnen/Schließen von Benutzereingaben. – nsk

Verwandte Themen