Инджект сервиса в сервис в angular 2?

Верно ли я понимаю что если в компоненте (RandomCpm) я инджектю сервис A, который в свою очередь инджектит сервис B, а может быть еще и он что то инджектит(C,D.etc), то в провайдерах такого компонента RandomCpm я долженуказать все эти сервисы(A,B,C,D...), а не только сервис А? и маленький подвопрос про зависимости, если я в компоненте SubRandomCpm явно не укажу провайдеры то подтянутся все эти парентовые провайдеры под парентовым инстансом?
  • Вопрос задан
  • 684 просмотра
Решения вопроса 1
@bromzh
Drugs-driven development
Нет, естественно надо указать только то, что будешь внедрять непосредственно в сам компонент. А можно даже не указывать ничего, если сервис ты регистрируешь глобально в функции bootstrap.

Вообще логика такая: все сервисы, которые внедряются, должны каким-то образом быть зарегистрированы. Те сервисы, которые ты зарегистрировал глобально в функции bootstrap будут доступны глобально во всех компонентах. Их необязательно описывать в поле providers. Если сервисы не регистрируются глобально, то нужно регистрировать в компоненте. Причём сервисы будут доступны и в дочерних компонентах.
Вообще, у каждого компонента свой инжектор зависимостей. Таким образом, для каждого компонента можно настроить провайдеры сервисов по-своему. Если сервис не зарегистрирован у компонента, то его ищут вверх по иерархии компонентов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы