1

私は公式https://material.angular.io/components/dialog/overviewに従いました。ダイアログコンポーネント自体を閉じる必要がある場合は、以下のようにMdDialogRef参照を挿入してからイベントを閉じる必要がありますMdDialogRef.closeは、コールバックからコールされたときにダイアログを閉じない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(); 
     }); 
    } 
} 

Google OAuthからの応答が成功した場合、closeDialog()が呼び出されたことがわかります。ただし、ダイアログは閉じません。 [setTimeOut/UserActionの一部としてダイアログを閉じるのに問題はありません]

答えて

0

私はダイアログにフォームがあり、デュアルでngModelを使用していたのと同じ問題を抱えていました。私の入力ではバインディングがバインドされていたオブジェクトは定義されていませんでした。

以下は、入力がダイアログにある場合、data.media.i18n.en.titleが未定義の場合、コンソールに例外はなく、mdDialogは閉じません。

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

は、だから私のダイアログを開く前に、私は正しく、そのオブジェクトを初期化しなければならなかった:あなたがここにそれをテストすることができ

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

https://plnkr.co/edit/95atm4PIeKvyorVkcD0f?p=preview

それplnkrが失敗しました。これを修正したい場合は、ダイアログを開く前にanimal.nameを定義してください。

また、失敗すると、ダイアログにアニメーションがないことがわかります。

多くのコードを公開していないため、あなたのケースではわかりません。

+0

マインは別のものですが、 'コールバックイベントで'ダイアログを閉じようとしています。前述のように、私はユーザーの入力操作で開閉するのに問題はありません。 – nsk

関連する問題