Что такое useFactory?
Продвинутые темы
`useFactory` — это способ регистрации провайдера в Angular DI через фабричную функцию, которая создаёт значение зависимости, часто с использованием других зависимостей.
Что делает
useFactory задаёт функцию, результат которой становится значением зависимости. Полезно, когда создание требует логики или других сервисов:
providers: [
{
provide: ApiService,
useFactory: (http: HttpClient, config: Config) => {
return new ApiService(http, config.apiUrl);
},
deps: [HttpClient, Config], // зависимости фабрики
},
]- useFactory — функция создания.
- deps — зависимости, которые DI передаст в фабрику.
Когда применять
- Условное создание — выбор реализации по условию (окружение, конфиг).
- Сложная инициализация — нужна логика при создании.
- Зависимость от рантайм-значений — конфиг, feature-флаги.
useFactory: () => environment.production ? new RealService() : new MockService()Способы провайдинга
useClass, useValue, useExisting, useFactory (самый гибкий — с логикой).
Коротко для собеседования
useFactory в Angular DI регистрирует провайдер через фабричную функцию, создающую значение (с зависимостями из deps). Применяют для условного создания, сложной инициализации и зависимости от рантайм-конфига. Самый гибкий способ провайдинга.