В Angular инъекция зависимостей (DI) обычно применяется в компонентах и сервисах с использованием декораторов. Однако, если необходимо использовать DI в обычных функциях или классах без Angular-декораторов, можно воспользоваться методом
runInInjectionContext().Пример:
import { inject, runInInjectionContext, Injectable, EnvironmentInjector } from '@angular/core';
@Injectable({ providedIn: 'root' })
class MyService {
logMessage() {
console.log('Hello from MyService!');
}
}
function executeWithDI(injector: EnvironmentInjector) {
runInInjectionContext(injector, () => {
const myService = inject(MyService);
myService.logMessage();
});
}В этом примере функция executeWithDI принимает EnvironmentInjector и использует
runInInjectionContext() для создания контекста инъекции. Внутри этого контекста вызывается функция inject() для получения экземпляра MyService, после чего вызывается метод logMessage(). 👉 @sWebDev
