¿Cómo comparto datos entre componentes en Angular 2?
En Angular 1.x.x, simplemente solicita el mismo servicio y termina con la misma instancia, lo que permite compartir los datos en el servicio.
Ahora en Angular 2 tengo un componente que hace 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í lo que está mal (usando un servicio para compartir datos) o necesito marcar el servicio como un singleton (dentro de una instancia de la aplicación) o algo así?
Estoy en2.0.0-alpha.27/
por cierto
Inyecto un servicio a través deappInjector
(editar: ahoraproviders
) en el@Component
anotación y luego guardar una referencia en el constructor. Funciona localmente en el componente, pero no en todos los componentes (no comparten la misma instancia de servicio) como pensé que lo harían.
ACTUALIZAR: A partir de Angular 2.0.0 ahora tenemos @ngModule donde definiría el servicio bajo elproviders
propiedad 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