некоторые методы зависят от других сервисов (не root) напр. ProductService и KeyService.
При вызове OrderService в компоненте я делаю providers: [OrderService, ProductService, KeyService].
Скажите есть ли способ не писать все зависимости (кроме root)?
Эти зависимости должны быть уникальны в контексте одного компонента?
Не совсем понял ваш вопрос? Я создаю не root сервисы потому понимаю так, что при создании OrderService - получу «свой» экземпляр ProductService, KeyService - или я не правильно понимаю?
дерево инжекторов работает так, что ангуляр ищет от ребенка к родителю, ребенком в вашем случае является компонент. Если в провайдерах компонента не указан нужный токен(в нашем случае сервис), то ангуляр пойдет дальше к инжектору модуля, если там нет - то идет в рутовый. Причем дерево касается и компонент, т.е. если в дочернем нет в провайдерах нужного сервиса, пойдем в родительский. Сервисы так же ищут свои зависимости по этому дереву. Если один сервис запровайдить, а его зависимости не провайдить в компонент, то он полезет их искать выше по дереву. Поэтому если хотим уникальный инстанс в рамках компонента - указываем его в провайдерах.
Обсуждают сегодня