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