前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >angular2.0+ 模块之间共享service并订阅更新

angular2.0+ 模块之间共享service并订阅更新

作者头像
用户2436820
发布2018-09-05 10:23:16
1.3K0
发布2018-09-05 10:23:16
举报
  1. 如何利用service共享数据
  2. 本次需求 我们拥有两个组件 “ChildComponent,SecondComponent”,组件之间都有一个共同的服务“ConstService”,在“SecondComponent”改动“ConstService”中的变量,“ChildComponent”自动更新变化后的值 3.“ConstService”服务

image.png

之前试过用“eventEmitter”想再值变动之后发射出去,但是在“ChildComponent”接受不到值的变化,通过查阅得知“eventEmitter”只适合事件绑定在子组件和父组件之间

image.png

---所以我们需要利用Rxjs的【subject】(RxJS Subject 是一种特殊类型的 Observable,它允许将值多播给多个观察者)。将值的变动发送给它的观察者

  1. “childComponent”组件

image.png --- 细心的你会发现这里有个注释 // providers: [ConstService],之前好奇把服务引入不放在app.module下面的providers[],放在单独的组件下面 【注意】这样是不对分别在“ChildComponent,SecondComponent”各自引入自己的service这样实例出来的service就是两个不同的对象,不能使两个组件共享一个service 订阅主要的实现就是通过subscribe(简单理解成类似于其他库或语言中的 addListener 的工作方式。)

html:模版

image.png

  1. “SecondComponent”组件

html模版:

image.png

在这个组件中我用[ngModel]将service服务中的global的值和input中的值绑定在一起,通过改变input框更新service中的值

ts文件:

image.png

最终效果演示:

service.gif

代码语言:javascript
复制
                                                                                     ----引用请注明出处
                                                                                           来自 奔跑的蛙牛 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.11.07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档