Angular 2父子组件之间共享服务通信的实现


Posted in Javascript onJuly 04, 2017

前言

如今的前端开发,都朝组件式开发模式靠拢,如果使用目前最流行的前端框架Angular和React开发应用,不可避免地需要开发组件,也就意味着我们需要考虑组件间的数据传递等问题,不过Angular 2已经为我们提供了很好的解决方案。

本文详细介绍了Angular2父子组件共享服务通信的相关内容,父子组件共享同一个服务,利用该服务实现双向通信,下面来看看详细的介绍:

第一步:定义服务

parentService.ts

Angular 2父子组件之间共享服务通信的实现

1).这里用Injectable修饰这个类是一个服务,在其他用到地方只需要注入使用

(2).我们还定义了一个name变量并且初始化值,和一个公共的方法getData

parent.module.ts

Angular 2父子组件之间共享服务通信的实现

我们这里把刚才创建的parentService服务依赖加进来,接着在provides中注册这个parentService服务,在ParentModule模块中注册之后,对于父组件和子组件来说都是指向同一个服务实例,而且这个服务的作用域只在当前这个模块中有效,这句话理解了,就等于理解了父子组件共享服务实现数据通信

在父组件中使用服务

parent.component.ts

Angular 2父子组件之间共享服务通信的实现

导入parentService服务,在构造函数中声明注入parentService服务,因为我们在parentModule模块中,已经将parentService 通过provides注册过,所以我们在组件中不需要进行注册,直接可以使用,你可以这样理解,把当它想象成在模块的容器中已经存在了,只需要从容器中拿出来使用。

(1).这里我们定义了一个OnClick()方法,当页面点击事件触发,就会来调用parentService服务定义的方法getData()获取返回值,弹出返回值。

对应的父组件模版

Angular 2父子组件之间共享服务通信的实现

在子组件中使用服务

因为共享的是同一个ParentService服务实例,所以我们在子组件中也可以调用个ParentService服务的方法,代码同上面用一样

childen.component.ts

Angular 2父子组件之间共享服务通信的实现 

这里同样定义了一个方法,用于测试调用parentService服务,代码实现跟上面一样,不在描述,

对应的子组件模版

Angular 2父子组件之间共享服务通信的实现 

最终效果:

Angular 2父子组件之间共享服务通信的实现

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
基于jquery的inputlimiter 实现字数限制功能
May 30 Javascript
IE8 chrome中table隔行换色解决办法
Jul 09 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
Jun 14 Javascript
jquery中子元素和后代元素的区别示例介绍
Apr 02 Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
JS实现一个列表中包含上移下移删除等功能
Sep 24 Javascript
Javascript获取background属性中url的值
Oct 17 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
Dec 26 Javascript
vue translate peoject实现在线翻译功能【新手必看】
Jun 07 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
Aug 14 Javascript
Vue中nprogress页面加载进度条的方法实现
Nov 13 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 Vue.js
jQuery实现动态给table赋值的方法示例
Jul 04 #jQuery
Angular 2父子组件数据传递之局部变量获取子组件其他成员
Jul 04 #Javascript
Angular 4.X开发实践中的踩坑小结
Jul 04 #Javascript
jQuery操作DOM_动力节点Java学院整理
Jul 04 #jQuery
jQuery层级选择器_动力节点节点Java学院整理
Jul 04 #jQuery
jQuery简介_动力节点Java学院整理
Jul 04 #jQuery
JS实现给json数组动态赋值的方法示例
Mar 19 #Javascript
You might like
PHP源码之 ext/mysql扩展部分
2009/07/17 PHP
深入PHP FTP类的详解
2013/06/13 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
2006/09/22 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
vue脚手架中配置Sass的方法
2018/01/04 Javascript
在微信小程序中使用图表的方法示例
2019/04/25 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
python实现发送邮件功能代码
2017/12/14 Python
Python 函数基础知识汇总
2018/03/09 Python
Python中的函数作用域
2018/05/07 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
pycharm修改file type方式
2019/11/19 Python
python3中rank函数的用法
2019/11/27 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
给分销商的致歉信
2014/01/14 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
体育教师个人工作总结
2015/02/09 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
Go语言中break label与goto label的区别
2021/04/28 Golang
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS