Angular2 - Cómo compartir datos / cambios entre componentes

Entonces, supongamos que tiene una interfaz que tiene una barra de herramientas, una barra lateral y una cuadrícula. La barra de herramientas tiene un menú desplegable que cuando un usuario cambia, el contenido de la barra lateral y la cuadrícula cambian. De vuelta en Angular 1, usaría un Servicio para tener todos mis datos dinámicos. Cuando algo cambia en el servicio, todos los componentes que usan ese servicio también se actualizarán.

Bueno, en Angular 2, parece que las personas están usando diferentes métodos. Quería obtener su opinión sobre cuál es la forma preferida.

Servicio estáticoOnChangesEntradas y salidas

Actualizado - 09/03/16

Parece que la mejor solución es el hilo que publicó Thierry Templier:Delegación: EventEmitter u Observable en Angular2

La pregunta restante que tengo es si es una buena práctica crear un nuevo servicio para cada elemento de datos que se comparte entre los componentes o si solo podemos tener un servicio que tenga un objeto que almacene todos los datos compartidos.

See Plnkr for code

Plunker Original - Cada cambio tendrá su propio servicio

Plunker revisado por ejemplo - Solo un servicio que almacena todos los datos en el objeto. Se pasará un tipo a cada oyente para verificar si necesita hacer algo basado en ese tipo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta