En Angular 1.xx, simplemente solicita el mismo servicio y termina con la misma instancia, lo que hace posible compartir los datos en el servicio.
Ahora en Angular 2 tengo un componente que tiene una referencia a mi servicio. Puedo leer y modificar los datos en el servicio, lo cual es bueno. Cuando intento inyectar el mismo servicio en otro componente, parece que obtengo una nueva instancia.
¿Qué estoy haciendo mal? ¿Es el patrón en sí el que está mal (usar un servicio para compartir datos) o necesito marcar el servicio como singleton (dentro de una instancia de la aplicación) o algo así?
Estoy en por 2.0.0-alpha.27/ cierto
Inyecto un servicio a través de appInjector(editar: ahora providers) en la @Componentanotación y luego guardo una referencia en el constructor. Funciona localmente en el componente, pero no entre componentes (no comparten la misma instancia de servicio) como pensé que lo harían.
ACTUALIZACIÓN : A partir de Angular 2.0.0 ahora tenemos @ngModule donde definiría el servicio bajo la providerspropiedad en dicho @ngModule. Eso asegurará que la misma instancia de ese servicio se pase a cada componente, servicio, etc. en ese módulo.
https://angular.io/docs/ts/latest/guide/ngmodule.html#providers
ACTUALIZACIÓN : Mucho ha sucedido con el desarrollo de Angular y FE en general. Como mencionó @noririco, también podría usar un sistema de gestión estatal como NgRx: https://ngrx.io/