No Angular 1.xx você simplesmente solicita o mesmo serviço e acaba com a mesma instância, possibilitando o compartilhamento dos dados no serviço.
Agora no Angular 2 tenho um componente que faz referência ao meu serviço. Posso ler e modificar os dados no serviço, o que é bom. Quando tento injetar o mesmo serviço em outro componente, parece que recebo uma nova instância.
O que estou fazendo errado? É o próprio padrão que está errado (usando um serviço para compartilhar dados) ou preciso marcar o serviço como um singleton (em uma instância do aplicativo) ou algo assim?
Estou no 2.0.0-alpha.27/ btw
Eu injeto um serviço por meio de appInjector(editar: agora providers) na @Componentanotação e, em seguida, salvo uma referência no construtor. Ele funciona localmente no componente - apenas não entre os componentes (eles não compartilham a mesma instância de serviço) como eu pensei que fariam.
ATUALIZAÇÃO : a partir do Angular 2.0.0 agora temos @ngModule onde você definiria o serviço sob a providerspropriedade em dito @ngModule. Isso garantirá que a mesma instância desse serviço seja passada para cada componente, serviço, etc. nesse módulo.
https://angular.io/docs/ts/latest/guide/ngmodule.html#providers
ATUALIZAÇÃO : Muita coisa aconteceu com o desenvolvimento do Angular e do FE em geral. Como @noririco mencionou, você também pode usar um sistema de gerenciamento de estado como o NgRx: https://ngrx.io/