浅谈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 相关文章推荐
告诉大家什么是JSON
Jun 10 Javascript
JS判定是否原生方法
Jul 22 Javascript
javascript实现全局匹配并替换的方法
Apr 27 Javascript
javascript拖拽应用实例
Mar 25 Javascript
好好了解一下Cookie(强烈推荐)
Jun 14 Javascript
js下载文件并修改文件名
May 08 Javascript
Vue数组更新及过滤排序功能
Aug 10 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
Dec 06 Javascript
前端axios下载excel文件(二进制)的处理方法
Jul 31 Javascript
layui使用数据表格实现购物车功能
Jul 26 Javascript
vue-router结合vuex实现用户权限控制功能
Nov 14 Javascript
html5 录制mp3音频支持采样率和比特率设置
Jul 15 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
一个PHP模板,主要想体现一下思路
2006/12/25 PHP
基于initPHP的框架介绍
2013/04/18 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
Function.prototype.call.apply结合用法分析示例
2013/07/03 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
ReactNative实现图片上传功能的示例代码
2017/07/11 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
Vue实现页面添加水印功能
2019/11/09 Javascript
python清除指定目录内所有文件中script的方法
2015/06/30 Python
python生成IP段的方法
2015/07/07 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
PyQt5组件读取参数的实例
2019/06/25 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
Final类有什么特点
2012/04/25 面试题
即将毕业大学生自荐信
2014/01/24 职场文书
2014年基建工作总结
2014/12/12 职场文书
信仰观后感
2015/06/03 职场文书
企业宣传语大全
2015/07/13 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书