foundation

Services

Держите переиспользуемую бизнес-логику, HTTP, координацию состояния и side effects в injectable services.

Services — injectable классы (`@Injectable`) с переиспользуемой логикой: HTTP, фасады над store, координация фич. Держат components тонкими и тестируемыми.

					@Injectable({ providedIn: 'root' })
export class UserApi {
  constructor(private http: HttpClient) {}
  getUser(id: string) { return this.http.get<User>(`/api/users/${id}`); }
}
				

`providedIn: 'root'` tree-shake singletons. Feature-scoped providers — экземпляры на lazy-route.

На интервью: service vs state компонента, тесты с mocks, god-service на все фичи.

Типовые ошибки: UI view state в root singleton, HttpClient без маппинга ошибок, циклические зависимости services.

Компромисс: удобные root singletons против скрытого глобального состояния за границами фич.

Чеклист:

  • Одна ответственность на service.
  • root для app-wide singletons.
  • feature providers для изоляции.
  • Единообразно Observable или Promise.