PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Что такое 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). Применяют для условного создания, сложной инициализации и зависимости от рантайм-конфига. Самый гибкий способ провайдинга.

Другие вопросы раздела