1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Angular Material对话框mat-dialog中如何接收和传递数据

Angular Material对话框mat-dialog中如何接收和传递数据

时间:2023-11-21 20:11:54

相关推荐

Angular Material对话框mat-dialog中如何接收和传递数据

Angular Material对话框mat-dialog中如何接收和传递数据

一、对话框的几个部分

mat-dialog-title:对话框标题

mat-dialog-content:对话框内容部分

mat-dialog-action:对话框底部的操作按钮,如取消/提交等

二、父组件

(以下统一将调用到对话框的组件称为父组件,而对话框组件就是子组件)

这里的父子组件跟其他父子组件不太一样,不是直接通过引入对话框组件的方式,而是使用ref方式来调用的,之前尝试过@Input()装饰器来传值但是失败了。。。

之所以叫父子组件是觉得他们本质上还是父子组件之间的传值,以后遇到类似这样通过ref来调用子组件的,应该多少可以参考并尝试一下这种思路

以下来正式说明其用法

1.在父组件的ponent.html文件中调用openxxxx()方法(随意起名)触发对话框的弹出事件

2.在父组件的ponent.ts文件中引入dialog

import {MatDialog} from '@angular/material/dialog';

然后在刚才设置的方法中调起弹出框的open事件,并可在其中传入值data,

当关闭弹出框后,会触发afterClosed()并将从子组件(对话框组件)中携带过来的值以result表示

更具体一点的例子:

//打开新建项目的对话框openNewProjectDialog(){const dialogRef = this.dialog.open(width:'700px',data:{item:[...this.item],age:this.age,obj:{a:1,b:'123',}//总之你想传多少数据都可以哈哈//甚至是方法也可以传fn1:this.fn,//在父组件中有fn方法})}

注意:如果父组件中的fn方法中还调用了其他方法,这时只传fn过去是不行的,目前还没想到很好的解决办法,只有以后补充了,也请大佬们多多指教

目前我的做法是直接传this,但是传过去的只有属性,没有方法,方法还是在dialog组件中实现

三、子组件(对话框组件)

3.对话框组件接收数据、回传数据

子组件的ponent.html文件中直接写html结构代码即可

在子组件的ponent.ts文件中

import {MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';

例如要在dialog子组件中调用父组件的fn方法

使用

this.data.fn1();//即可

或使用父组件中的属性

this.data.obj.b

主要参考的文章

/crackedlove/p/11603275.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。