Spec-Zone.ru › Angular

Injector

Конкретные инжекторы реализуют этот интерфейс. Инжекторы настраиваются с помощью провайдеров, которые связывают зависимости различных типов с токенами внедрения.

Провайдеры DIStaticProviderТипы иерархий инжекторов

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 перегрузки

Получает экземпляр из инжектора на основе указанного токена.

@paramtokenProviderToken<T>
@paramnotFoundValueundefined
@paramoptionsInjectOptions & { optional?: false | undefined; }
@returnsT

Экземпляр из инжектора, если он определён, в противном случае notFoundValue.

Получает экземпляр из инжектора на основе указанного токена.

@paramtokenProviderToken<T>
@paramnotFoundValuenull | undefined
@paramoptionsInjectOptions
@returnsT | null

Экземпляр из инжектора, если он определён, в противном случае notFoundValue.

Получает экземпляр из инжектора на основе указанного токена.

@paramtokenProviderToken<T>
@paramnotFoundValueT | undefined
@paramoptionsInjectOptions | undefined
@returnsT

Экземпляр из инжектора, если он определён, в противном случае notFoundValue.

@deprecated

начиная с v4.0.0 используйте ProviderToken

@paramtokenstring | ProviderToken<T>
@paramnotFoundValueany
@returnsany

THROW_IF_NOT_FOUND

{}

NULL

Injector

create

2 перегрузки
@deprecated

начиная с v5 используйте новую сигнатуру Injector.create(options)

@paramprovidersStaticProvider[]
@paramparentInjector | undefined
@returnsInjector

Создаёт новый экземпляр инжектора, предоставляющий одну или несколько зависимостей в соответствии с указанным типом или типами StaticProvider.

@paramoptions{ providers: (any[] | TypeProvider | ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider | StaticClassProvider)[]; parent?: Injector | undefined; name?: string | undefined; }

Объект со следующими свойствами:

  • providers: массив провайдеров типа StaticProvider.
  • parent: (необязательно) родительский инжектор.
  • name: (необязательно) заданное разработчиком имя для идентификации нового инжектора.
@returnsDestroyableInjector

Новый экземпляр инжектора.

Примечания по использованию

Следующий пример создаёт экземпляр инжектора сервиса.

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API