工作中用到ng2的组件通讯 奈何官方文档言简意赅 没说明白 自己搞明白后 整理后分享下

rxjs 不懂的看这篇文章 讲很详细 http://www.open-open.com/lib/view/open1462525661610.html

以下是服务代码

 import { Injectable } from '@angular/core';
import {Subject}from"rxjs/Subject";
@Injectable()
export class CService {
private outputTitle = new Subject();
//订阅
//声明变量 订阅Observer
output$ = this.outputTitle.asObservable(); //推送 调用next方法 Subject会向所有已经在其上注册的Observer多路推送 theValue UpData(message:any) {
this.outputTitle.next(message);
}
}

以下是子组件中的代码 节选

 import { Component, OnInit ,Input,
import {CService}from"../shared/corresponded.service";//引入服务 单例模式 @Component({
//这里一定不要注册服务提供商 也就是不要在里面声明
providers: []//不需要提供CService服务
})
export class HomePostsComponent implements OnInit { constructor(
//与父组件的cs服务实例相同 是同一个实例
public _CService:CService) {
} //自己业务需要在初始化的时候调用 所以就放在这里了 \
ngOnInit() {
//发送消息
//updata调用next方法 推送数据
this._CService.UpData({title:"铃铛宠物",ico:""});
} }

以下是父组件代码 节选

 import { Component,OnInit,AfterViewChecked,AfterViewInit} from '@angular/core';
//引入服务
import {CService}from"./shared/corresponded.service";
@Component({
//服务供应商 只在父组件使用 子组件不需要
providers: [CService]
})
export class AppComponent implements OnInit,AfterViewChecked,AfterViewInit {
//此处cs 实例和子组件的实例是一样的 都是同一个实例
constructor(private CS:CService) { } //在ngAfterViewChecked每次做完组件视图和子视图的变更检测之后调用。 会执行多次
//ngAfterViewInit初始化完组件视图及其子视图之后调用。只调用一次
//订阅组件信息 只写了接收 没写发送 道理是一样的
ngAfterViewInit() {
let that = this;
console.log("ngAfterViewInit");
this.CS.output$.subscribe((value:any)=> {
console.log(value);
that.title = value.title;
that.ico = value.ico;
})
} }

整个通信流程 核心就是单例  只有一个服务的实例  目前就这么多了  不明白的留言交流吧

angular2 组件之间通讯-使用服务通讯模式 2016.10.27 基于正式版ng2的更多相关文章

  1. angular组件之间的通讯

    组件通讯,意在不同的指令和组件之间共享信息.如何在两个多个组件之间共享信息呢. 最近在项目上,组件跟组件之间可能是父子关系,兄弟关系,爷孙关系都有.....我也找找了很多关于组件之间通讯的方法,不同的 ...

  2. Angular 发布订阅模式实现不同组件之间通讯

    在我们项目中要实现不同组件之间通讯,Angular的@Input和@Output只能实现有父子组件的限制,如果是复杂跨组件实现不同组件可以通过共享变量的方式实现,比如这个博客的思路:https://w ...

  3. Android--Otto事件总线 -- 组件之间通讯框架使用 --模式解析

    前言:Otto事件总线 -- 组件之间通讯框架 对于之前的情况activity之间或者fragment之间等跳转传值一般都是用bundle.intent等,从activityA --- activit ...

  4. Angular组件之间通讯

    组件之间会有下列3种关系: 1. 父子关系 2. 兄弟关系 3. 没有直接关系 通常采用下列方式处理(某些方式是框架特有)组件间的通讯,如下: 1父子组件之间的交互(@Input/@Output/模板 ...

  5. Angular10 组件之间的通讯

    1 父组件和子组件之间的通讯 2 利用中间组件实现两个组件之间的通讯 3 利用服务实现两个组件之间的通讯 2017年8月26日20:09:13 待更新... 1 组件之间的关系图 1.1 父子关系 1 ...

  6. 组件之间的通讯:vuex状态管理,state,getters,mutations,actons的简单使用(一)

    之前的文章中讲过,组件之间的通讯我们可以用$children.$parent.$refs.props.data... 但问题来了,假如项目特别大,组件之间的通讯可能会变得十分复杂... 这个时候了我们 ...

  7. vue.js组件之间通讯的数据双向绑定----父亲把数据传递给儿子,儿子更改数据后,重新发送给父亲,父亲数据更改后,属性会重新发送个儿子,儿子刷新新数据

    vue组件是相互独立的,如果要交互通讯,这时候,就需要组件之间数据互通了 往常我们讲的都是数据传递,子传父,父传子,都没有说子和父,父与子之间的数据互通 父亲传递给儿子数据,儿子触发一个父亲方法,将最 ...

  8. vue.js组件之间的通讯-----父亲向儿子传递数据,儿子接收父亲的数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 分布式服务通讯框架XXL-RPC

    <分布式服务通讯框架XXL-RPC>    一.简介 1.1 概述 XXL-RPC 是一个分布式服务通讯框架,提供稳定高性能的RPC远程服务调用功能.现已开放源代码,开箱即用. 1.2 特 ...

随机推荐

  1. hive中sql解析出对应表和字段的调查

    ---恢复内容开始--- .阿里的druid中的sql parser有各种关系数据库sql的解析,但hive的不支持. druid初期的版本中是包含hive的,将以前版本中的hive dialect对 ...

  2. ManagerDay-1

    初做管理,没有任何管理经验的我,有点紧张,在来公司之前,脑子里一直在想能不能胜任这份工作. 想着能否做出合格的流程图,像样的需规.我该如何和组内开发人员打好交道.报价预算该如何做,这些都交织在脑内显得 ...

  3. JavaScript---网络编程(1)-介绍、变量、运算符与语句

    JavaScript也是一种编程语言.并不是Java的分支哦. 可以直接在浏览器中运行的编程语言. JavaScript 的历史故事: 1.JavaScript语言与名称的由来(Netscape,Su ...

  4. C#开发移动平台iOS、Android 与Windows

    1.Xamarin http://www.csdn.net/article/2014-02-28/2818585-Xamarin-CSDN-mobile-develop

  5. JavaScript高级程序设计37.pdf

    用DOM范围实现简单选择 selectNode()和selectNodeContents()它们都接收一个DOM节点参数,然后使用该节点中的信息来填充范围,其中selectNode()方法选择整个节点 ...

  6. 使用二维NDRange workgroup

    作为初学者一直,经过多次的上网搜索你一定会看到迈克老狼的向量加法的示例,不知道你是否和我一样,刚开始并不是很准确的知道他的add.cl写的代码的意思,源码如下: #pragma OPENCL EXTE ...

  7. POJ 2502 Dijsktra

    POJ subway 600K 0MS 题意:乘坐地铁从家到学校,地铁40km/h 步行10km/h , 已知各个站点的x,y坐标,输入的信息每个列次用-,-1隔开,要求花费的时间最少 解决方案:把家 ...

  8. hadoop ssh无密码登陆

    VM DHCP蛋疼了,这次整个static... scp

  9. css控制文本框的只读属性的方法

    css 封装整个只读文本框的属性: .TextBoxReadOnly{ border:1px solid #C0C0C0; text-align:left; background-color:#D3D ...

  10. wpf DataGrid CheckBox列全选

    最近在wpf项目中遇到当DataGrid的header中的checkbox选中,让该列的checkbox全选问题,为了不让程序员写自己的一堆事件,现写了一个自己的自定义控件 在DataGrid的 &l ...