浅谈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下通过getList函数实现分页效果的代码
Sep 17 Javascript
JQuery实现简单时尚快捷的气泡提示插件
Dec 20 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
Mar 03 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
Sep 14 Javascript
基于jQuery实现音乐播放试听列表
Apr 14 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
Jul 26 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
Sep 06 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
Dec 22 Javascript
js实现的xml对象转json功能示例
Dec 24 Javascript
javascript基础练习之翻转字符串与回文
Feb 20 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
Apr 30 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
Feb 26 Vue.js
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验证码类(分享)
2013/08/06 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
js setattribute批量设置css样式
2009/11/26 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
python中sleep函数用法实例分析
2015/04/29 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
节省高达65%的城市景点费用:Go City
2019/07/06 全球购物
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
高分子材料与工程专业推荐信
2013/12/01 职场文书
30年同学聚会邀请函
2014/01/25 职场文书
运动会稿件200字
2014/02/07 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
图书馆志愿者活动总结
2014/06/27 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
2014年客服工作总结范文
2014/11/13 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
预备党员介绍人意见
2015/06/01 职场文书
观后感开头
2015/06/19 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python
解析高可用Redis服务架构分析与搭建方案
2021/06/20 Redis