Angular2 - Como compartilhar dados / alterar entre componentes

Então, digamos que você tenha uma interface que tenha uma barra de ferramentas, barra lateral e uma grade. A barra de ferramentas possui uma lista suspensa que, quando um usuário altera, o conteúdo na barra lateral e na grade é alterado. De volta ao Angular 1, eu usaria um Serviço para ter todos os meus dados dinâmicos. Quando algo muda no serviço, todos os componentes que usam esse serviço também são atualizados.

Bem, no Angular 2, parece que as pessoas estão usando métodos diferentes. Eu queria que você entendesse qual é a maneira preferida.

Serviço estáticoOnChangesEntradas e saídas

Atualizada - 03/09/16

Parece que a melhor solução é o tópico publicado por Thierry Templier:Delegação: EventEmitter ou Observable in Angular2

A questão restante que tenho é se é uma prática recomendada criar um novo serviço para cada item de dados compartilhado entre componentes ou podemos apenas ter um serviço que possui um objeto que armazena todos os dados compartilhados.

See Plnkr for code

Plunker Original - Cada mudança terá seu próprio serviço

Revisor Plunker, por exemplo - Apenas um serviço que armazena todos os dados no objeto. Um tipo será passado para cada ouvinte para verificar se ele precisa fazer alguma coisa com base nesse tipo.

questionAnswers(2)

yourAnswerToTheQuestion