我用angular2material MdDialog来展示一个表单.

当用户提交表单时,会向后端发送一个请求,如果请求成功,我需要关闭对话框.如果后端请求失败,我需要保持对话框打开.

我可以使用下面的按钮关闭对话框.

<button md-raised-button md-dialog-close>Cancel</button>

但是,在这种情况下,我只需要在后端请求成功时关闭对话框,所以我需要一种以编程方式关闭对话框的方法.

对话框中显示的组件没有dialog ref,我不知道从组件自动关闭对话框的任何其他方法.

有没有什么方法可以从对话框内的组件中关闭对话框?

推荐答案

如果要从对话框中关闭它:

constructor(private dialogRef: MatDialogRef<MyDialogComponent>){ }

closeDialog(){
  this.dialogRef.close();
}

如果要从对话框的父级关闭它:

constructor(private matDialog: MatDialog){}

//anywhere
let dialogRef = this.matDialog.open(MyDialogComponent);
dialogRef.close();

Angular相关问答推荐

带输入的单位测试Angular 分量.需要

HttpInterceptorFn在Angular 17中被忽略

如何在滑动滑块中获取当前项目的索引?

Angular KendoGrid RowReorderable,drop不适用于新添加的行

ANGLING HTTP.GET()返回包含数据的数组

元素上的Angular 管道链接不起作用

MonoTypeOperatorFunction不可分配给OperatorFunction类型的参数

Angular Mat Select 显示键盘焦点和鼠标悬停焦点的问题

ngRouterOutlet和组件生命周期使用自定义模板渲染的问题

升级到 Webpack 5.79.0 后 NX Angular 项目构建失败

如何访问父组件中提供的 TemplateRef 内的服务?

如何在 Angular 中将tailwind 类传递给 fontawesome

如何从表单组中禁用的表单控件中获取值?

不再需要 core-js 了吗?

Error: Module not found: Error: Can't resolve '@angular/cdk/scrolling'

Angular 2:无法绑定到 x,因为它不是已知的本机属性

交替行 colored颜色 angular material表

包 '@angular/cli' 不是依赖项

在angular-cli中创建模块时生成路由模块

如何对 *ngFor 应用数量限制?