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

相關問題