浅谈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 相关文章推荐
jQuery 选择器项目实例分析及实现代码
Dec 28 Javascript
jQuery实现跨域iframe接口方法调用
Mar 14 Javascript
JS实现网页上随滚动条滚动的层效果代码
Nov 04 Javascript
第二篇Bootstrap起步
Jun 21 Javascript
深入浅出讲解ES6的解构
Aug 03 Javascript
浅谈js常用内置方法和对象
Sep 24 Javascript
原生JS改变透明度实现轮播效果
Mar 24 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
Jul 31 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
Aug 03 Javascript
浅谈angular4 ng-content 中隐藏的内容
Aug 18 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
Jul 19 Javascript
详解关于React-Router4.0跳转不置顶解决方案
May 10 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一些服务器端特性的配置加强php的安全
2006/10/09 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
支持png透明图片的php生成缩略图类分享
2015/02/08 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
详解vue-resource promise兼容性问题
2017/06/20 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
python微信撤回监测代码
2019/04/29 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
Android笔试题总结
2014/11/29 面试题
C#中的验证控件有几种
2014/03/08 面试题
优秀员工年终发言演讲稿
2014/01/01 职场文书
调解员先进事迹材料
2014/02/07 职场文书
社会治安综合治理管理责任书
2014/04/16 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
医生个人年终总结
2015/02/28 职场文书
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技