Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将数据从模态传递到调用角分量?

如何将数据从模态传递到调用角分量?
EN

Stack Overflow用户
提问于 2020-06-19 09:00:18
回答 2查看 984关注 0票数 0

callingmodal.component.ts

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class CallingmodalComponent implements OnInit {
    openDialog(): void {
        const dialogRef = this.dialog.open(SharemodalComponent, {
          width: '640px', disableClose: true
        });
        console.log(dialogRef);

      }
}

sharemodalComponent.component.ts

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class SharemodalComponent implements OnInit {
  onaddCus(): void {
    console.log(this.sharingWith);
    console.log(this.addCusForm.value.selectedPermissionType);
  }
}

只要单击一个按钮,我就调用onaddCus()。在这个函数中,我想将this.sharingWith和this.addCusForm.value.selectedPermissionType传递给callingmodal.component.ts。

如何将这些参数传递给callingmodal.component.ts?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-19 09:37:20

我假设您是在动态地从sharemodalComponent创建callingmodal。在这种情况下,您可以使用单例服务在它们之间共享数据。尝试以下几点

shared.service.ts

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Injectable({providedIn: 'root'})
export class SharedService {
  private _sharingWithSource = new BehaviorSubject<any>(null);
  private _selectedPermissionTypeSource = new BehaviorSubject<any>(null);
  
  public sharingWith$ = this._sharingWithSource.asObservable();
  public selectedPermissionType$ = this._selectedPermissionTypeSource.asObservable();

  set sharingWithSource(value: any) {
    this._sharingWithSource.next(value);
  }

  set selectedPermissionTypeSource(value: any) {
    this._selectedPermissionTypeSource.next(value);
  }
}

sharemodalComponent.component.ts

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class SharemodalComponent implements OnInit {
  constructor(private sharedService: SharedService) { }
  
  onaddCus(): void {
    this.sharedService.sharingWithSource = this.sharingWith;
    this.sharedService.selectedPermissionTypeSource = this.addCusForm.value.selectedPermissionType;
    console.log(this.sharingWith);
    console.log(this.addCusForm.value.selectedPermissionType);
  }
}

在调用模式组件中,在ngOnInit钩子中订阅以捕获所有推送通知到可观测值。

callingmodal.component.ts

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class CallingmodalComponent implements OnInit, OnDestroy {
  completed$ = new Subject<any>();

  constructor(private sharedService: SharedService) { }

  ngOnInit() {
    this.sharedService.sharingWith$.pipe(
      takeUntil(this.completed$)
    ).subscribe(
      value => {
        if (value) {           // <-- default value is `null`
          this.sharingWith = value 
        }
      }
    );
 
    this.sharedService.selectedPermissionType$.pipe(
      takeUntil(this.completed$)
    ).subscribe(
      value => {
        if (value) { 
          this.selectedPermissionType = value 
        }
      }
    );
  }

  openDialog(): void {
    const dialogRef = this.dialog.open(SharemodalComponent, {
      width: '640px', disableClose: true
    });
    console.log(dialogRef);
  }

  ngOnDestroy() {
    this.completed$.next();           // <-- close the observables
    this.completed$.complete();
  }
}

最新情况-解释

  1. RxJS BehaviorSubject --多播可观测RxJS Subject的变体。它可以保存推送给它的当前数据,并在订阅时立即发出它。这就是为什么它需要一个初始值(我们在这里使用null ),并在赋值之前进行检查。
  2. 行为主体的next方法被用来将一个新的值推到可观测值上。其他推送通知的有效方法是errorcomplete。推到error将调用观察者中的错误回调,调用complete将完成可观察的流。
  3. 每当涉及订阅时,都会出现来自打开/未关闭订阅的潜在内存泄漏。因此,关闭它的OnDestroy钩子中的组件中的订阅始终是很好的做法。一种方法是将订阅分配给局部变量并在其上调用unsubscribe()。其他优雅的方法是使用RxJS takeUntil操作符。有关此方法的更多信息,这里
  4. 这里是RxJS团队核心成员对何时使用asObservable()函数的一个很好的解释。
票数 1
EN

Stack Overflow用户

发布于 2020-06-19 09:26:38

将以下构造添加到SharemodalComponent中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
constructor(@Inject(MAT_DIALOG_DATA) public data: any,
            public dialogRef: MatDialogRef<SharemodalComponent>) {}

超过您可以从您的CallingmodalComponent传递数据并在关闭事件上订阅:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const dialogRef = this.dialog.open(SharemodalComponent, {
      width: '640px', disableClose: true,
      data: { sharingWith: '100px', ... }
});

dialogRef.afterClosed().subscribe(result => {
  console.log(result );
});

如果单击按钮,您可以关闭对话框并将数据传递给CallingmodalComponent:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.dialogRef.close('some data here');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62475180

复制
相关文章
微信小程序----全局状态管理 (便于全局埋点等操作)
说明 由于我是一个有着一颗玻璃心的博主,导致在2018年后博客很少更新。原因是由于我的分享并没有解决到部分人的问题,而导致被骂了。当时这颗玻璃心就碎了,所以这两年以来很是消极,博客很少更新。这里给那些关注我,支持我的朋友说声【对不起】!前段时间,看了一个工作两年时间博主的 2021 年 flag,突然回首,还有很多记忆。所以,我决定以后每周最少一篇博客,记录我的学习和成长。谢谢! 需求场景 小程序开发完成,接到需求:需要对小程序的所有页面【onLoad】生命周期进行埋点,对页面中的点击事件进行埋点。
Rattenking
2021/02/01
3.1K0
thymeleaf全局常量定义
目测应该是重写这货就可以了,talk is cheap,show me the code
小尘哥
2018/08/15
1.5K0
[CodeIgniter4]-公共函数和全局常量
CodeIgniter 你可以在任何地方使用它们,并且不需要加载任何 类库或辅助函数。
landv
2020/03/05
3K0
修改prototype使Event支持observe任何对象
上次对js自定义事件做了一些介绍,这次修改prototype使得Event对象支持observe任何对象,代码如下: var Event = {     observers: false,     observe: function(element, name, observer, useCapture) {         if(typeof element == 'string')             element = document.getElementById(element);      
用户1183026
2018/01/19
6370
如何使程序在Linux后台运行
这样一来,test程序就在后台运行了。但是,这样处理还不够,因为这样做虽然程序是在后台运行了,但log依然不停的输出到当前终端。因此,要让终端彻底的清静,还应将log重定向到指定的文件:
阿凡亮
2020/04/14
8.8K0
全局复制:允许你复制任何应用内文字
文章更新:   20161119 初次成文   20170420 增加了按键触发复制模式和Android7.0+上磁贴的说明 应用名称:全局复制 应用包名:com.camel.corp.universalcopy 备注说明:无   这段时间事情实在是比较多,所以博客的更新又被搁置了,之前发的那几篇干货篇幅都好长好长,虽然写的时候花了不少时间但是估计也没多少人看(笑),倒是好久没有为大家推荐应用了,正好这几天自己空闲时间比较多,所以...(强行拖出片场)   话不多说马上开始介绍我们今天的嘉宾"全局复制"
美丽应用
2018/07/20
2.6K0
程序员应该如何提高自己?
想法和问题 当程序员已经处于中级时,应如何提高自己?有很多关于“学习编程”的资源,能够让人从 0 到新手(虽然这些资源中大多数的质量是值得商榷的),但是怎么样才能将中级水平提高到专家级?如何构建允许我在高级别编写代码的心理模型? 在这篇文章中,我将讨论关于普遍性能改进的一些理论,然后讨论一些程序员用于实践的方法(以及我对这些实践的想法),然后是我对改进成为中级或更优秀程序员的最佳方法所作出的结论。 关于普遍性能改进的快速指南 我最近一直在阅读大量关于性能改进的内容,大多数文献使用 K. Anders Eri
企鹅号小编
2018/02/06
5380
Antd 全局化配置使组件中文化
1、引入ConfigProvider:使用 React 的 context 特性,只需在应用外围包裹一次即可全局生效;
用户9914333
2022/07/22
1K0
获取任何小程序源码
这种方法,并不能反编译出所有的小程序源码,请自知! 具体的局限请看:qwerty472123大神的md文件  https://github.com/qwerty472123/wxappUnpacker 
似水的流年
2019/12/06
4.3K0
回归制造本质——边缘计算使能全局效率提升
边缘计算越来越受到了来自IT和OT领域的企业的关注,本文旨在从制造本质—从源头分析如何去推进其实现。
CloudBest
2019/08/16
5780
回归制造本质——边缘计算使能全局效率提升
屏幕上的文字如何才能更清晰,舒服,便于阅读?
1、点击[显示适配器属性] 2、点击[颜色管理] 3、点击[颜色管理] 4、点击[识别监视器] 5、点击[高级] 6、点击[校准显示器] 7、点击[下一步] 8、点击[下一步] 9、点击[下一步] 10、点击[重置] 11、点击[下一步] 12、点击[跳过亮度和对比度窗口] 13、点击[下一步] 14、点击[下一步] 15、点击[当前校准] 16、点击[完成] 17、点击[下一步] 18、点击[下一步] 19、点击[下一步]
裴来凡
2022/05/28
8340
屏幕上的文字如何才能更清晰,舒服,便于阅读?
MoA-Transformer | Swin-Transformer应该如何更好地引入全局信息?
基于Transformer的体系结构在自然语言处理(NLP)领域取得了巨大的成功。受Transformer在语言领域的巨大成功的启发,Vision Transformer被提出,并在ImageNet数据集上取得了优秀的性能。Vision Transformer就像NLP中的word token一样,将图像分割成patches并输入Transformer之中,并通过Transformer的几个multi-head self-attention层来建立远程依赖关系。
集智书童公众号
2022/02/11
9440
MoA-Transformer | Swin-Transformer应该如何更好地引入全局信息?
程序猿修养 日志应该如何写
在和小伙伴讨论日志的时候,小伙伴说的是文件的读写,而实际上的日志在广义上包含了任何的输出方式,无论是控制台还是文件。而日志记录在哪不重要,重要的是什么日志应该记录,应该怎么记录和记录什么内容
林德熙
2020/04/08
1.4K0
如何让任何小程序都支持在PC端打开?
​随着小程序的发展,出现了越来越多小程序在PC端打开的需求。很多程序员同行都想了解:小程序支持在windows系统、mac、统信UOS等桌面操作系统中打开吗?
海岛船长加西亚
2023/05/08
8330
微信小程序如何实现全局状态管理?
globalData和缓存应该是大家比较熟悉的,但这二者会随着项目的不断迭代逐渐变的混乱和不易维护。
inline705
2023/06/10
1.8K0
微信小程序如何实现全局状态管理?
被黑客攻击后,平台方不承担任何责任
最近大家都在关注超星学习通被黑客攻击,用户数据在外网被售卖的事情,本来这种事情已经发生过很多次了,也不太想蹭这个热点,给大家造成恐慌。
信安之路
2022/10/04
8790
被黑客攻击后,平台方不承担任何责任
如何编写便于团队阅读和维护的SQL语句
作为结构化查询语言 SQL 的语法相对于其他编程语言非常简单,常用的关键字也就几个,完成同样的统计功能,SQL 代码量较少,我们很容易将 SQL 代码映射到二维表中的数据,SQL 不同操作的代码其实就是对应着二维表的不断变换。由于SQL语句学习简单,表达能力强,上手容易的有点,所以在数据处理中SQL语句就成为了最通用的和最优先考虑处理方式。在大数据中 SQL 应用主要分两种:一种是周期性的统计任务,另一种是分析任务。
deephub
2021/09/15
1.1K0
如何使 Python 程序快如闪电?这里有妙招
所以,让我们来证明那些人是错的——让我们看看如何提高 Python 程序的性能并使它们变得非常快!
AI研习社
2020/02/21
5850
点击加载更多

相似问题

为了便于访问,在全局元素中应该如何处理标题?

24

如何使C程序中的全局常量(跨多个文件工作)?

710

我应该如何分割我的js-文件以便于维护?

22

为了便于检索,我应该如何存储大量的流量数据?

31

在C++程序中应该把全局常量放在哪里?

50
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文