Angular 2 component to component communication -


i have top menu (component) displays list of models, , side menu (component) displays list of colors. in center of page have table (component) displays list of things based on user selections of color , model controls. none of controls child of other. table component rendered in router-outlet container.

how can make table component listen property changes in 2 menu components?

i have tried session service described here: https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-servicehttps://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service

it not work because table component not child of menu components.

i make simple service it:

@injectable() export class filterservice {     public modelchange$:eventemitter;     public colorchange$:eventemitter;      constructor(){         this.modelchange$ = new eventemitter();         this.colorchange$ = new eventemitter();     }      public setmodel(model):void{         this.modelchange$.emit(model);     }      public setcolor(color):void{         this.colorchange$.emit(color);     } } 

then topmenucomponent , sidemenucomponent invoke service's setters:

constructor(private _filterservice:filterservice){} // method invoked user's action onselect(value) {     this._filterservice.setmodel(value); // or setcolor() } 

and tablecomponent subscribe events:

constructor(private _filterservice:filterservice){     this._filterservice.modelchange$.subscribe(model => console.log("new model: " + model));     this._filterservice.colorchange$.subscribe(color => console.log("new color: " + color)); } 

i used interior artist show how work: at least tried to

hope helped.


Popular posts from this blog

php - How should I create my API for mobile applications (Needs Authentication) -

5 Reasons to Blog Anonymously (and 5 Reasons Not To)

Google AdWords and AdSense - A Dynamic Small Business Marketing Duo