Как описано в Угловой документации , назначение компонентов следующее:
В идеале, работа компонента заключается в том, чтобы обеспечить
ничего более. Компонент должен представлять свойства и методы для
привязка данных, для того, чтобы стать посредником между представлением (представленным
шаблон) и логику приложения (которая часто включает в себя некоторые понятия
модели).
В следующем параграфе объясняется назначение услуг:
Компонент может делегировать определенные задачи службам, например извлечение
данные с сервера, проверка ввода пользователя или запись непосредственно в
консоль. Определяя такие задачи обработки в инъекционном
класс обслуживания, вы делаете эти задачи доступными для любого компонента. Вы
также может сделать ваше приложение более адаптируемым, внедряя разных поставщиков
одного и того же вида услуг, в зависимости от
обстоятельства.
С точки зрения разработки программного обеспечения, это соответствует шаблону Singleton . В Angular стандартной практикой определения и создания сервисов является предоставление их на корневом уровне с последующим созданием общего экземпляра сервиса, который можно внедрить в другие классы / компоненты, которым это требуется.
В служебных файлах вы можете заметить декоратор @Injectable()
, который может выглядеть примерно так:
@Injectable()
export class SampleService {
// other things within your service
}
Обозначает класс как «сервис», который сообщит Angular внедрить его в другие компоненты как зависимость. Вы можете прочитать больше о внедрении зависимости через здесь .