В Angular 1.xx вы просто запрашиваете одну и ту же службу, и в итоге вы получаете один и тот же экземпляр, что позволяет обмениваться данными в службе.
Теперь в Angular 2 у меня есть компонент, который ссылается на мою службу. Я могу читать и изменять данные в сервисе, и это хорошо. Когда я пытаюсь внедрить ту же службу в другой компонент, мне кажется, что я получаю новый экземпляр.
Что я делаю неправильно? Это неправильный шаблон (использование службы для обмена данными), или мне нужно пометить службу как синглтон (в одном экземпляре приложения) или что-то в этом роде?
Я на 2.0.0-alpha.27/
BTW
Я добавляю службу через appInjector
(изменить: сейчас providers
) в @Component
аннотации, а затем сохраняю ссылку в конструкторе. Он работает локально в компоненте, а не между компонентами (они не используют один и тот же экземпляр службы), как я думал.
ОБНОВЛЕНИЕ : Начиная с Angular 2.0.0, у нас теперь есть @ngModule, где вы определяете службу в providers
свойстве, указанном @ngModule
. Это обеспечит передачу одного и того же экземпляра этой службы каждому компоненту, службе и т. Д. В этом модуле.
https://angular.io/docs/ts/latest/guide/ngmodule.html#providers
ОБНОВЛЕНИЕ : в разработке Angular и FE в целом произошло многое. Как упоминал @noririco, вы также можете использовать систему управления состоянием, такую как NgRx: https://ngrx.io/