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

Что такое useExisting?

Продвинутые темы

`useExisting` — это способ регистрации провайдера в Angular DI, создающий алиас: токен ссылается на уже существующий провайдер, а не создаёт новый экземпляр.

Что делает

useExisting говорит DI-контейнеру: «когда запрашивают этот токен, верни экземпляр другого, уже зарегистрированного провайдера». Это создаёт алиас без нового экземпляра.

providers: [
  LoggerService,
  { provide: OldLogger, useExisting: LoggerService },
]

Теперь OldLogger и LoggerService — один и тот же экземпляр.

useExisting против useClass

  • useClass — создаёт новый экземпляр класса.
{ provide: OldLogger, useClass: LoggerService } // ДВА разных экземпляра
  • useExisting — ссылается на существующий (один экземпляр).

Способы провайдинга в Angular DI

  • useClass — экземпляр класса.
  • useExisting — алиас на существующий провайдер.
  • useValue — готовое значение.
  • useFactory — фабричная функция.

Когда применять

  • Дать другой токен/интерфейс к тому же сервису.
  • Переход со старого токена на новый без дублирования экземпляра.

Коротко для собеседования

useExisting в Angular DI создаёт алиас: токен возвращает уже существующий экземпляр другого провайдера, а не новый (в отличие от useClass, который создаёт новый). Используют, чтобы дать один сервис под разными токенами без дублирования.

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