Что такое 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, который создаёт новый). Используют, чтобы дать один сервис под разными токенами без дублирования.