Injector

Concrete injectors implement this interface.

abstract class Injector { static THROW_IF_NOT_FOUND: _THROW_IF_NOT_FOUND static NULL: Injector static ngInjectableDef: defineInjectable({...}) static create(options: StaticProvider[] | {...}, parent?: Injector): Injector abstract get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): T }

说明

For more details, see the "Dependency Injection Guide".

静态属性

属性名类型说明
THROW_IF_NOT_FOUND
NULL
ngInjectableDef

静态方法

Create a new Injector which is configure using StaticProviders.

static create(providers: StaticProvider[], parent?: Injector): Injector

参数

providers

Type: StaticProvider[].

parent

Type: Injector.

可选. 默认值是 undefined.

返回值

Injector

static create(options: { providers: StaticProvider[]; parent?: Injector; name?: string; }): Injector

参数

options

Type: { providers: StaticProvider[]; parent?: Injector; name?: string; }.

返回值

Injector

Example

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);

方法

Retrieves an instance from the injector based on the provided token.

abstract get(token: any, notFoundValue?: any): any

参数

token

Type: any.

notFoundValue

Type: any.

可选. 默认值是 undefined.

返回值

any

使用说明

Example

const injector: Injector = ReflectiveInjector.resolveAndCreate([{provide: 'validToken', useValue: 'Value'}]); expect(injector.get('validToken')).toEqual('Value'); expect(() => injector.get('invalidToken')).toThrowError(); expect(injector.get('invalidToken', 'notFound')).toEqual('notFound');

Injector returns itself when given Injector as a token:

const injector = ReflectiveInjector.resolveAndCreate([]); expect(injector.get(Injector)).toBe(injector);