在 Angular 中使用 MatDialog 时,可以通过订阅 afterClosed()
方法来获取对话框关闭后的结果。如果 afterClosed()
方法不被调用,可能是由于一些常见问题导致的。下面是一些可能的解决方法:
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
constructor(private dialog: MatDialog) { }
afterClosed()
方法:const dialogRef = this.dialog.open(MyDialogComponent);
dialogRef.afterClosed().subscribe(result => {
// 处理对话框关闭后的结果
});
检查订阅 afterClosed()
方法的位置是否正确。通常,它应该在对话框的打开方法之后立即调用。
如果在对话框组件中手动关闭对话框,确保调用了 MatDialogRef.close()
方法:
constructor(private dialogRef: MatDialogRef) { }
closeDialog() {
this.dialogRef.close();
}
MatDialogRef.close()
方法。constructor(private dialogRef: MatDialogRef, private formBuilder: FormBuilder) { }
submitForm() {
if (this.myForm.valid) {
// 执行异步操作
this.myService.saveData(this.myForm.value).subscribe(() => {
// 操作完成后关闭对话框
this.dialogRef.close();
});
}
}
通过检查以上几点,应该能够解决 afterClosed()
方法不被调用的问题。如果问题仍然存在,请检查浏览器控制台是否有任何错误信息,并进一步调查可能的问题。