浅谈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为table动态添加行的实现代码
Mar 30 Javascript
jQuery版仿Path菜单效果
Dec 15 Javascript
JS中eval函数的使用示例
Jul 21 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
Nov 23 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
Dec 08 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
Feb 04 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
Feb 12 Javascript
Vue监听数据对象变化源码
Mar 09 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
Mar 22 jQuery
从源码看angular/material2 中 dialog模块的实现方法
Oct 18 Javascript
vue中如何使用ztree
Feb 06 Javascript
小程序开发基础之view视图容器
Aug 21 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 生成WML页面方法详解
2009/08/09 PHP
JavaScript 基础问答三
2008/12/03 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
python共享引用(多个变量引用)示例代码
2013/12/04 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
Python开发的十个小贴士和技巧及长常犯错误
2018/09/27 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
django中forms组件的使用与注意
2019/07/08 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
wxPython色环电阻计算器
2019/11/18 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
日语专业毕业生自荐信
2013/11/11 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
实验室的标语
2014/06/20 职场文书
党课心得体会范文
2014/09/09 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
文艺部部长竞选稿
2015/11/21 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python