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