inject
Внедряет токен из текущего активного инжектора. inject поддерживается только в контексте внедрения зависимостей. Его можно использовать во время:
- Создания (через
constructor) класса, экземпляр которого создаётся системой DI, например@Injectableили@Component. - Инициализации полей таких классов.
- В фабричной функции, заданной для
useFactoryуProviderили@Injectable. - В функции
factory, заданной дляInjectionToken. - В стеке вызовов функции в контексте DI.
API
function inject<T>(token: ProviderToken<T>): T;
function inject<T>(
token: ProviderToken<T>,
options: InjectOptions & { optional?: false | undefined },
): T;
function inject<T>(token: ProviderToken<T>, options: InjectOptions): T | null;
function inject(token: HostAttributeToken): string;
function inject(
token: HostAttributeToken,
options: { optional: true },
): string | null;
function inject(
token: HostAttributeToken,
options: { optional: false },
): string;
function inject<T>(token: ProviderToken<T>): T;
Tвнедрённое значение, если операция выполнена успешно, и null в противном случае.
function inject<T>(token: ProviderToken<T>, options: InjectOptions & { optional?: false | undefined; }): T;Tвнедрённое значение, если операция выполнена успешно.
function inject<T>(token: ProviderToken<T>, options: InjectOptions): T | null;
T | nullвнедрённое значение, если операция выполнена успешно; null, если токен не найден и запрошено необязательное внедрение.
function inject(token: HostAttributeToken): string;
HostAttributeTokenТокен, представляющий статический атрибут узла-хоста, который необходимо внедрить.
stringЗначение атрибута, если он существует.
function inject(token: HostAttributeToken, options: { optional: true; }): string | null;HostAttributeTokenТокен, представляющий статический атрибут узла-хоста, который необходимо внедрить.
{ optional: true; }
string | nullЗначение атрибута, если он существует, в противном случае — null.
function inject(token: HostAttributeToken, options: { optional: false; }): string;HostAttributeTokenТокен, представляющий статический атрибут узла-хоста, который необходимо внедрить.
{ optional: false; }
stringЗначение атрибута, если он существует.
Примечания по использованию
На практике вызовы inject() разрешены в конструкторе, параметре конструктора и инициализаторе поля:
@Injectable({providedIn: 'root'})
export class Car {
radio: Radio|undefined;
// OK: field initializer
spareTyre = inject(Tyre);
constructor() {
// OK: constructor body
this.radio = inject(Radio);
}
}
Также допустимо вызывать inject из фабрики провайдера:
providers: [
{provide: Car, useFactory: () => {
// OK: a class factory
const engine = inject(Engine);
return new Car(engine);
}}
]
Вызовы функции inject() вне контекста создания класса приведут к ошибке. В частности, вызовы inject() запрещены после создания экземпляра класса, в методах (включая хуки жизненного цикла):
@Component({ ... })
export class CarComponent {
ngOnInit() {
// ERROR: too late, the component instance was already created
const engine = inject(Engine);
engine.start();
}
}
Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/core/inject