浅谈angular2子组件的事件传递(任意组件事件传递)


Posted in Javascript onSeptember 30, 2018

angular2子组件的事件传递

angular2有很多组件组成,画面由很多路由,导致事件的传递很“笨拙”,本组的技术负责人发现了任意组件传递事件的这个方法,教会了我,我做个笔记。

项目情况:

画面结构复杂,路由数目偏多,组件数目多,嵌套复杂。业务要求:任何出现人名的地方,点击人名,直接打开和这个人的聊天画面

以前用angular2官网给的烹饪技巧基本解决90%的需求,当然这个如果是用Input,Output也可以,但是那样的话,结构将是混沌状态。

附:angluar2的组件通讯的传送门(anglar2的官网对Safari支持可不太好,真爱生命,请用chrome)

实现

service:

这是重点,相当于一个事件队列,所有注入此service的组件,都可以发起事件,插入到队列中,所有订阅此事件队列的组件都会收到广播。(暂时先用广播这个词吧)

public eventbus: EventEmitter<any> = new EventEmitter<any>();

聊天组件:

constructor( private _workservice:WorkService) {
 // 订阅聊天事件
 this._workservice.eventbus.subscribe(_event => {
  if (_event&&_event.name=='chart') {
  // 所有订阅这个事件的组件都会收到eventbus上的事件触发,相当于广播。
  // 所以使用在事件传递的参数中添加一个name变量来判断这个事件是不是给我的。
   // .........
   // 此处写处理就行了,通过_event取参数
   // .........
  }
  }
 )
 }

发起聊天的组件:

this.workService.eventbus.emit({
  type:3,
  voipAccount:userid
 });
// 注意emit()的参数是json结构。

简单示意

浅谈angular2子组件的事件传递(任意组件事件传递)

以上这篇浅谈angular2子组件的事件传递(任意组件事件传递)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
探讨js中的双感叹号判断
Nov 11 Javascript
jQuery实现异步获取json数据的2种方式
Aug 29 Javascript
jquery实现九宫格大转盘抽奖
Nov 13 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
Feb 16 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
May 18 Javascript
微信小程序 loading 详解及实例代码
Nov 09 Javascript
利用ES6语法重构React组件详解
Mar 02 Javascript
基于vue.js无缝滚动效果
Jan 25 Javascript
Vue2 监听属性改变watch的实例代码
Aug 27 Javascript
angularjs的单选框+ng-repeat的实现方法
Sep 12 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
Jun 15 Javascript
通过javascript实现扫雷游戏代码实例
Feb 09 Javascript
vue-router 手势滑动触发返回功能
Sep 30 #Javascript
Vue CLI3 开启gzip压缩文件的方式
Sep 30 #Javascript
JS数组实现分类统计实例代码
Sep 30 #Javascript
浅谈微信页面入口文件被缓存解决方案
Sep 29 #Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
Sep 29 #Javascript
vue使用v-for实现hover点击效果
Sep 29 #Javascript
vue 利用路由守卫判断是否登录的方法
Sep 29 #Javascript
You might like
js和php邮箱地址验证的实现方法
2014/01/09 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
js 自定义的联动下拉框
2010/02/07 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
2013/11/19 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
2017/08/10 jQuery
AngularJS 中ui-view传参的实例详解
2017/08/25 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
js实现转动骰子模型
2019/10/24 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
python操作字典类型的常用方法(推荐)
2016/05/16 Python
python基于http下载视频或音频
2018/06/20 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
python二进制文件的转译详解
2019/07/03 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
python实现双色球随机选号
2020/01/01 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
电子商务专业实习生自我鉴定
2013/09/24 职场文书
幼师自我鉴定范文
2013/10/01 职场文书
初中生三年学习生活的自我评价
2013/11/03 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
2014年社区计生工作总结
2014/11/18 职场文书