Services
Service - это широкая категория, охватывающая любые значения, функции или фичи, которые необходимы вашему приложению.
Service обычно представляет собой класс с узкой, четко определенной целью. Он должен делать что-то конкретное и делать это хорошо.
Примеры предназначения сервисов:
- logging service
- data service
- message bus
- tax calculator
- application configuration
Пример логер сервиса:
export class LoggerService {
log(msg: any) { console.log(msg); }
error(msg: any) { console.error(msg); }
warn(msg: any) { console.warn(msg); }
}
Классы компонентов должны быть закрытыми ящиками. Они не получают данные с сервера, не проверяют введенные пользователем данные и не записываются непосредственно на консоль. Они делегируют такие задачи сервисами.
Рассказать какую логику писать в сервисах. Сделать сервис со списком TODO
export class DataService{
private _data: Todo[] = [
{ title: "Todo 1"},
{ title: "Todo 2"},
{ title: "Todo 2"}
];
getData() {
return this._data;
}
addData(title: string){
this.data.push({title});
}
}
В сервисе определен массив данных и методы для работы с ним. В реальном приложении эти данные можно получать с сервера или из какого-либо внешнего хранилища.
Как же теперь работать с этим сервисом в компоненте?
Чтобы задействовать сервис в компоненте, его надо импортировать:
import {DataService} from './data.service';
Также необходимо его добавить в коллекцию providers
компонента:
providers: [DataService]
Все используемые сервисы должны быть определены в коллекции providers. И после этого мы сможем задействовать встроенный в Angular механизм dependency injection и получить объект сервиса в конструкторе компонента и затем использовать по необходимости:
constructor(private dataService: DataService){}