Injector
Конкретные инжекторы реализуют этот интерфейс. Инжекторы настраиваются с помощью провайдеров, которые связывают зависимости различных типов с токенами внедрения.
API
abstract class Injector {
abstract get<T>(token: ProviderToken<T>, notFoundValue: undefined, options: InjectOptions & { optional?: false | undefined; }): T;
abstract get<T>(token: ProviderToken<T>, notFoundValue: null | undefined, options: InjectOptions): T | null;
abstract get<T>(token: ProviderToken<T>, notFoundValue?: T | undefined, options?: InjectOptions | undefined): T;
abstract get<T>(token: string | ProviderToken<T>, notFoundValue?: any): any;
static THROW_IF_NOT_FOUND: {};
static NULL: Injector;
static create(providers: StaticProvider[], parent?: Injector | undefined): Injector;
static create(options: { providers: (any[] | TypeProvider | ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider | StaticClassProvider)[]; parent?: Injector | undefined; name?: string | undefined; }): DestroyableInjector;
}
get
4 перегрузкиПолучает экземпляр из инжектора на основе указанного токена.
undefined
TЭкземпляр из инжектора, если он определён, в противном случае notFoundValue.
Получает экземпляр из инжектора на основе указанного токена.
null | undefined
T | nullЭкземпляр из инжектора, если он определён, в противном случае notFoundValue.
Получает экземпляр из инжектора на основе указанного токена.
T | undefined
TЭкземпляр из инжектора, если он определён, в противном случае notFoundValue.
THROW_IF_NOT_FOUND
{}NULL
Injectorcreate
2 перегрузкиСоздаёт новый экземпляр инжектора, предоставляющий одну или несколько зависимостей в соответствии с указанным типом или типами StaticProvider.
{ providers: (any[] | TypeProvider | ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider | StaticClassProvider)[]; parent?: Injector | undefined; name?: string | undefined; }Объект со следующими свойствами:
-
providers: массив провайдеров типа StaticProvider. -
parent: (необязательно) родительский инжектор. -
name: (необязательно) заданное разработчиком имя для идентификации нового инжектора.
Примечания по использованию
Следующий пример создаёт экземпляр инжектора сервиса.
class Square {
name = 'square';
}
const injector = Injector.create({providers: [{provide: Square, deps: []}]});
const shape: Square = injector.get(Square);
expect(shape.name).toEqual('square');
expect(shape instanceof Square).toBe(true); Пример использования
const injector: Injector = Injector.create({
providers: [{provide: 'validToken', useValue: 'Value'}],
});
expect(injector.get('validToken')).toEqual('Value');
expect(() => injector.get('invalidToken')).toThrowError();
expect(injector.get('invalidToken', 'notFound')).toEqual('notFound');
Injector возвращает себя, если в качестве токена передан Injector:
const injector = Injector.create({providers: []});
expect(injector.get(Injector)).toBe(injector);
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/Injector