import {Component, Input, OnChanges} from 'angular2/core'; import {EmitterService} from './emitter.service'; @Component({ selector: 'dispatcher', template: '' }) class DispatcherComponent implements OnChanges { @Input() id: string; private value = "dispatcher component value"; doStuff() { EmitterService.get(this.id).emit(value); } } @Component({ selector: 'listener', template: '' }) class ListenerComponent implements OnChanges { @Input() id: string; ngOnChanges() { EmitterService.get(this.id).subscribe(value => console.log(value)); } } @Component({ providers: [EmitterService], selector: 'host', template: ` ` }) export class HostComponent { public host_id: "HOST_COMPONENT"; constructor(private _emitterService: EmitterService) {} }