В объяснении учебника AngularJS 2.0 Heroes говорится, что если дочерний компонент включает службу в свой список поставщиков @Component, то Angular создаст отдельный экземпляр этой службы, характерный для дочернего элемента. Чего я не понимаю, так это того, что бы вы сделали, если бы иногда вы хотели использовать дочерний компонент независимо, а иногда в родительском компоненте. Это кажется жестким ограничением. Я только что играл с Angular 2.0, поэтому, скорее всего, я что-то неправильно понял.
Вот объяснение с сайта Angular.io из раздела «Услуги» учебника по героям.
Приложение: Слежка за родительской службой
Ранее мы заявляли, что если мы внедрили родительский AppComponent HeroService в HeroDetailComponent, мы не должны добавлять массив поставщиков в метаданные HeroDetailComponent.
Почему? Потому что это говорит Angular создать новый экземпляр HeroService на уровне HeroDetailComponent. HeroDetailComponent не нужен собственный экземпляр службы; ему нужен экземпляр службы своего родителя. Добавление массива provider создает новый экземпляр службы, который скрывает родительский экземпляр.
Тщательно продумайте, где и когда регистрировать провайдера. Поймите масштаб этой регистрации. Будьте осторожны, чтобы не создать новый экземпляр службы на неправильном уровне.
Вот ссылка на эту страницу пришло из, чтобы поместить это в контекст.