If my angular2 app looks like this, and blonde on the top going to talk with ginger on right-middle, should they organize a party for it? 
Emit events, use inputs an outputs - this is angular2 way? Data should flow from child to parent to the root, and then from parent to child to the point? I'm new here and often I would like to have some global object where I can keep some information that all components need to know. When data changes in that global object it should be magically change in all other services and components that it injected. For example user login/logout, or if he click on button and so on.
import {Injectable} from 'angular2/core';
@Injectable()
export object Globals {
logged: false,
showThatDiv: true
}
But I read somewhere that it is Angular1, not Angular2 way. Is it right? Or I'm wrong? It's not looks like global soup, just global state's object.
For example now I have this structure:
|-root
|-google api component
|-google auth
|-youtube api
|-playlists
|-video
|-myComponent
|-sub1
|-sub2
|-sub3
|...
mySub1 component need to know if user logged and if so show (*ngIf) some div in sub2. Or from mySub3 component call checkGauth() in googleAuth service. From mySub2 component add video to YouTube playlist and onAdded show results in sub2, or from sub3 create new playlist and show it on sub2. A lot of variants.
I'm tired to write code for all of it. It make it more complex. And sometimes thinking about do this:
|-root
|-google api component
|-google auth
|-youtube api
|-playlists
|-video
|-myComponent
|-sub1
|-sub2
|-sub3
|...