У Angular 1.xx ви просто просите ту саму послугу, і ви отримуєте той самий екземпляр, що робить можливим обмін даними в службі.
Зараз у Angular 2 у мене є компонент, який має посилання на мою службу. Я можу читати та змінювати дані в службі, що добре. Коли я намагаюся ввести ту саму службу в інший компонент, здається, ніби я отримую новий екземпляр.
Що я роблю не так? Чи не сам шаблон є неправильним (за допомогою служби для обміну даними), чи мені потрібно позначити службу як єдину (в межах одного екземпляра програми) чи щось інше?
Я до 2.0.0-alpha.27/
речі
Я ввожу службу через appInjector
(редагувати: зараз providers
) в @Component
анотацію, а потім зберігаю посилання в конструкторі. Він працює локально в компоненті - тільки не між компонентами (вони не мають спільного екземпляра служби), як я думав, що вони будуть.
ОНОВЛЕННЯ : станом на Angular 2.0.0 тепер у нас є @ngModule, де ви можете визначити службу за providers
властивістю на @ngModule
. Це забезпечить передачу того самого екземпляра цієї служби кожному компоненту, службі тощо в цьому модулі.
https://angular.io/docs/ts/latest/guide/ngmodule.html#providers
ОНОВЛЕННЯ : З розробкою Angular та ІП загалом сталося багато. Як згадував @noririco, ви також можете використовувати державну систему управління, таку як NgRx: https://ngrx.io/