Created
January 2, 2016 05:27
-
-
Save sasxa/e1164d9773b31459f6dc to your computer and use it in GitHub Desktop.
Angular2 Communicating between sibling components
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import {Injectable, EventEmitter} from 'angular2/core'; | |
@Injectable() | |
export class EmitterService { | |
private static _emitters: { [ID: string]: EventEmitter<any> } = {}; | |
static get(ID: string): EventEmitter<any> { | |
if (!this._emitters[ID]) | |
this._emitters[ID] = new EventEmitter(); | |
return this._emitters[ID]; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: ` | |
<dispatcher [id]="host_id"></dispatcher> | |
<listener [id]="host_id"></listener> | |
` | |
}) | |
export class HostComponent { | |
public host_id: "HOST_COMPONENT"; | |
constructor(private _emitterService: EmitterService) {} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I am facing below issues. Please help me.
Created one parent component and name is book-list component.and another one component is created if i click book-list component book title how to come book-details in book-details page