2016-10-29 2 views
0

Я написал три службы для приложения Angular 2, с конфигурацией, которую два вставляют в третью и используют там. После импорта двух (все три украшены @Injectable()), я все еще получил неизвестную ошибку поставщика.Где лучше всего зарегистрировать Угловые 2 провайдера

Чтобы решить эту проблему, я попытался разместить внедренные службы в массив поставщиков модулей, который работал. Это лучший подход?

Угловая документация показывает список инъекционных компонентов на уровне компонентов. Могу ли я просто разместить все инъекции в массив поставщиков модулей?

Похоже, это упростит настройку приложения, поскольку все настроено в центральном расположении для каждого модуля. Нет поиска зависимостей от компонента по компонентам.

ответ

3

Да, поместите его в @NgModule.providers, если услуга должна быть областью применения (singleton). Только добавьте его в @Component.providers, если служба должна быть составной областью действия (каждый компонент должен получить свой собственный экземпляр)


- Смотри также Hierarchical Injectors

1

Это зависит по вашему требованию, какой вид обслуживания вы хотите.

сервис Singleton

Если вы хотите использовать singleton service, вы можете разместить службу где-то в центральной зоне. Вы подумаете, что вам следует использовать/разместить услугу в AppModule. Но все-таки для достижения истинного одноплодного шаблона/экземпляра следует поместить/декларировать службу в CoreModule-please check how to user CoreModule, а затем импортировать CoreModule к AppModule.

Multiple Instance служба

Если вы объявляете Serivce в @Component decorator компонентов, вы будете иметь различные экземпляры службы в различных компонентах.

Смежные вопросы