In Angular 1.xx chiedi semplicemente lo stesso servizio e ti ritrovi con la stessa istanza, rendendo possibile la condivisione dei dati nel servizio.
Ora in Angular 2 ho un componente che ha un riferimento al mio servizio. Posso leggere e modificare i dati nel servizio, il che è positivo. Quando provo a iniettare lo stesso servizio in un altro componente, sembra che ottenga una nuova istanza.
Che cosa sto facendo di sbagliato? È lo schema stesso che è sbagliato (utilizzando un servizio per condividere dati) o devo contrassegnare il servizio come singleton (all'interno di un'istanza dell'app) o qualcosa del genere?
Sono su 2.0.0-alpha.27/
btw
Inserisco un servizio tramite appInjector
(modifica: ora providers
) nell'annotazione @Component
e quindi salvo un riferimento nel costruttore. Funziona localmente nel componente, ma non tra i componenti (non condividono la stessa istanza di servizio) come pensavo.
AGGIORNAMENTO : A partire da Angular 2.0.0 ora abbiamo @ngModule in cui definire il servizio sotto la providers
proprietà su detto @ngModule
. Ciò garantirà che la stessa istanza di quel servizio venga passata a ciascun componente, servizio, ecc. In quel modulo.
https://angular.io/docs/ts/latest/guide/ngmodule.html#providers
AGGIORNAMENTO : Sono successe molte cose allo sviluppo di Angular e FE in generale. Come menzionato da @noririco, potresti anche utilizzare un sistema di gestione dello stato come NgRx: https://ngrx.io/