当对话框组件的构造函数抛出时,我们将永远无法再次打开该对话框。
对话框构造函数:
constructor(
public dialogRef: MatDialogRef<DialogOverviewExampleDialog>,
@Inject(MAT_DIALOG_DATA) public data: DialogData
) {
if (data.count % 2) {
throw new Error('permission denied');
}
}
调用代码:
openDialog(): void {
const dialogRef = this.dialog.open(DialogOverviewExampleDialog, {
width: '250px',
data: { count: this.count++ },
});
dialogRef.afterClosed().subscribe((result) => {
console.log('The dialog was closed');
});
}
测试:
- 单击
Open Dialog
按钮:对话框打开(关闭) - 再次单击
Open Dialog
按钮:这次构造函数抛出 - 再次点击
Open Dialog
按钮:这次构造函数根本没有被调用
这是一个错误还是预期的?如果是预期的,请解释原因。
注意:
这些情况很少见,因为我们不会故意在构造函数中抛出异常,而是在OnInit()
回调中进行初始化工作。但是,如果无论出于何种原因发生这种情况,我不明白为什么下一个公开电话不起作用。