W Angular 1.xx po prostu prosisz o tę samą usługę i otrzymujesz tę samą instancję, umożliwiając udostępnianie danych w usłudze.
Teraz w Angular 2 mam komponent, który ma odniesienie do mojej usługi. Potrafię czytać i modyfikować dane w serwisie, co jest dobre. Kiedy próbuję wstrzyknąć tę samą usługę w innym komponencie, wydaje się, że otrzymuję nową instancję.
Co ja robię źle? Czy sam wzorzec jest nieprawidłowy (używanie usługi do udostępniania danych), czy też muszę oznaczyć usługę jako singleton (w ramach jednej instancji aplikacji), czy coś?
Tak przy 2.0.0-alpha.27/
okazji
Wstrzykuję usługę przez appInjector
(edit: now providers
) w @Component
adnotacji, a następnie zapisuję odwołanie w konstruktorze. Działa lokalnie w komponencie - ale nie między komponentami (nie współużytkują tego samego wystąpienia usługi), jak myślałem, że będą.
AKTUALIZACJA : Od Angular 2.0.0 mamy teraz @ngModule, w którym można zdefiniować usługę w ramach wspomnianej providers
właściwości @ngModule
. Zapewni to przekazanie tego samego wystąpienia tej usługi do każdego komponentu, usługi itp. W tym module.
https://angular.io/docs/ts/latest/guide/ngmodule.html#providers
AKTUALIZACJA : Generalnie wiele się wydarzyło w rozwoju Angulara i FE. Jak wspomniał @noririco, możesz również użyć systemu zarządzania stanem, takiego jak NgRx: https://ngrx.io/