Вполне вероятна ситуация, когда мы захотим использовать один сервис в другом сервисе. Например, в прошлой теме был создан сервис для работы с данными. Что если нам необходимо логгировать все операции с данными. Для логгирования определим новый сервис. Для этого добавим в папку src/app новый файл log.service.ts со следующим содержимым:
Чтобы указать, что сервис сам может использовать другие сервисы, к классу сервиса применяется декоратор @Injectable. Если класс не будет иметь подобного декоратора, то встроенный механизм внедрения зависимостей не сможет создать объект этого класса и выдаст ошибку.
Существует общая рекомендации от разработчиков Angular применять @Injectable к любому классу сервиса, хотя в принципе это необязательно.
Хотя в прошлой теме мы могли использовать сервис в компоненте без применения к компоненту декоратора @Injectable. Дело в том, что декоратор @Component, который применяется к компоненту, является подтипом @Injectable.
И также в случае с DataService сервис LogService также надо зарегистрировать в списке провайдеров AppComponent:
И несмотря на то, что напрямую LogService не используется в компоненте AppComponent, но он используется в DataService, который вызывается в AppComponent.
И при выполнении операций с данными в консоли браузера мы сможем увидеть работу сервиса LogService.