浅谈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 相关文章推荐
图片自动更新(说明)
Oct 02 Javascript
一些常用的Javascript函数
Dec 22 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
Dec 05 Javascript
php,js,css字符串截取的办法集锦
Sep 26 Javascript
js实现微信分享代码
Oct 11 Javascript
AngularJS equal比较对象实例详解
Sep 14 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
Nov 09 Javascript
Node.js中如何合并两个复杂对象详解
Dec 31 Javascript
浅析JS中常用类型转换及运算符表达式
Jul 23 Javascript
详解webpack编译多页面vue项目的配置问题
Dec 11 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
Apr 08 Javascript
react中props 的使用及进行限制的方法
Apr 28 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
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
javascript常用的方法整理
2015/08/20 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
js实现tab切换效果
2017/02/16 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
jQuery中ajax请求后台返回json数据并渲染HTML的方法
2018/08/08 jQuery
ES6小技巧之代替lodash
2019/06/07 Javascript
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
django静态文件加载的方法
2018/05/20 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
请说出几个常用的异常类
2013/01/08 面试题
汽车维修专业个人求职信范文
2014/01/01 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
员工开除通知书
2015/04/25 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
Django路由层如何获取正确的url
2021/07/15 Python
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android
Go获取两个时区的时间差
2022/04/20 Golang