# Class InjectorService

Class
Module
import { InjectorService } from "@tsed/di"
Source/packages/di/src/types/common/services/InjectorService.ts

# Overview

class InjectorService extends Container {
    #private;
    settings: DIConfiguration;
    logger: DILogger;
<span class="token keyword">constructor</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
get <span class="token function">resolvers</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">import</span><span class="token punctuation">(</span>".."<span class="token punctuation">)</span>.<a href="/api/di/types/common/interfaces/DIResolver.html"><span class="token">DIResolver</span></a><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
get <span class="token function">scopes</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> Record&lt;<span class="token keyword">string</span><span class="token punctuation">,</span> <a href="/api/di/types/common/domain/ProviderScope.html"><span class="token">ProviderScope</span></a>&gt;<span class="token punctuation">;</span>

<span class="token function">scopeOf</span><span class="token punctuation">(</span>provider<span class="token punctuation">:</span> <a href="/api/di/types/common/domain/Provider.html"><span class="token">Provider</span></a><span class="token punctuation">)</span><span class="token punctuation">:</span> <a href="/api/di/types/common/domain/ProviderScope.html"><span class="token">ProviderScope</span></a><span class="token punctuation">;</span>

<span class="token function">toArray</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>

get&lt;T<span class="token punctuation"> = </span><span class="token keyword">any</span>&gt;<span class="token punctuation">(</span>token<span class="token punctuation">:</span> <a href="/api/di/types/common/interfaces/TokenProvider.html"><span class="token">TokenProvider</span></a>&lt;T&gt;<span class="token punctuation">,</span> options?<span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">)</span><span class="token punctuation">:</span> T | undefined<span class="token punctuation">;</span>

getMany&lt;<a href="/api/core/types/domain/Type.html"><span class="token">Type</span></a><span class="token punctuation"> = </span><span class="token keyword">any</span>&gt;<span class="token punctuation">(</span>type<span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">,</span> locals?<span class="token punctuation">:</span> <a href="/api/di/types/common/domain/LocalsContainer.html"><span class="token">LocalsContainer</span></a><span class="token punctuation">,</span> options?<span class="token punctuation">:</span> <a href="/api/specs/schema/types/decorators/operations/Partial.html"><span class="token">Partial</span></a>&lt;<a href="/api/di/types/common/interfaces/InvokeOptions.html"><span class="token">InvokeOptions</span></a>&lt;<a href="/api/core/types/domain/Type.html"><span class="token">Type</span></a>&gt;&gt;<span class="token punctuation">)</span><span class="token punctuation">:</span> <a href="/api/core/types/domain/Type.html"><span class="token">Type</span></a><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>

<span class="token function">has</span><span class="token punctuation">(</span>token<span class="token punctuation">:</span> <a href="/api/di/types/common/interfaces/TokenProvider.html"><span class="token">TokenProvider</span></a><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">boolean</span><span class="token punctuation">;</span>
<span class="token function">alias</span><span class="token punctuation">(</span>token<span class="token punctuation">:</span> <a href="/api/di/types/common/interfaces/TokenProvider.html"><span class="token">TokenProvider</span></a><span class="token punctuation">,</span> alias<span class="token punctuation">:</span> <a href="/api/di/types/common/interfaces/TokenProvider.html"><span class="token">TokenProvider</span></a><span class="token punctuation">)</span><span class="token punctuation">:</span> this<span class="token punctuation">;</span>

invoke&lt;T<span class="token punctuation"> = </span><span class="token keyword">any</span>&gt;<span class="token punctuation">(</span>token<span class="token punctuation">:</span> <a href="/api/di/types/common/interfaces/TokenProvider.html"><span class="token">TokenProvider</span></a><span class="token punctuation">,</span> locals?<span class="token punctuation">:</span> <a href="/api/di/types/common/domain/LocalsContainer.html"><span class="token">LocalsContainer</span></a><span class="token punctuation">,</span> options?<span class="token punctuation">:</span> <a href="/api/specs/schema/types/decorators/operations/Partial.html"><span class="token">Partial</span></a>&lt;<a href="/api/di/types/common/interfaces/InvokeOptions.html"><span class="token">InvokeOptions</span></a>&lt;T&gt;&gt;<span class="token punctuation">)</span><span class="token punctuation">:</span> T<span class="token punctuation">;</span>

<span class="token function">loadAsync</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> Promise&lt;<span class="token keyword">void</span>&gt;<span class="token punctuation">;</span>
<span class="token function">loadSync</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">void</span><span class="token punctuation">;</span>

<span class="token function">bootstrap</span><span class="token punctuation">(</span>container?<span class="token punctuation">:</span> <a href="/api/di/types/common/domain/Container.html"><span class="token">Container</span></a><span class="token punctuation">)</span><span class="token punctuation">:</span> this<span class="token punctuation">;</span>

<span class="token function">loadModule</span><span class="token punctuation">(</span>rootModule<span class="token punctuation">:</span> <a href="/api/di/types/common/interfaces/TokenProvider.html"><span class="token">TokenProvider</span></a><span class="token punctuation">)</span><span class="token punctuation">:</span> Promise&lt;<span class="token keyword">void</span>&gt;<span class="token punctuation">;</span>

<span class="token function">load</span><span class="token punctuation">(</span>container?<span class="token punctuation">:</span> <a href="/api/di/types/common/domain/Container.html"><span class="token">Container</span></a><span class="token punctuation">)</span><span class="token punctuation">:</span> Promise&lt;<span class="token keyword">void</span>&gt;<span class="token punctuation">;</span>

<span class="token function">resolveConfiguration</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">void</span><span class="token punctuation">;</span>

<span class="token function">bindInjectableProperties</span><span class="token punctuation">(</span>instance<span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">,</span> locals<span class="token punctuation">:</span> <a href="/api/di/types/common/domain/LocalsContainer.html"><span class="token">LocalsContainer</span></a><span class="token punctuation">,</span> options<span class="token punctuation">:</span> <a href="/api/specs/schema/types/decorators/operations/Partial.html"><span class="token">Partial</span></a>&lt;<a href="/api/di/types/common/interfaces/InvokeOptions.html"><span class="token">InvokeOptions</span></a>&gt;<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">void</span><span class="token punctuation">;</span>

<span class="token function">bindProperty</span><span class="token punctuation">(</span>instance<span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> propertyKey<span class="token punctuation">,</span> resolver<span class="token punctuation">,</span> options <span class="token punctuation">}</span><span class="token punctuation">:</span> <a href="/api/di/types/common/interfaces/InjectablePropertyOptions.html"><span class="token">InjectablePropertyOptions</span></a><span class="token punctuation">,</span> locals<span class="token punctuation">:</span> <a href="/api/di/types/common/domain/LocalsContainer.html"><span class="token">LocalsContainer</span></a><span class="token punctuation">,</span> invokeOptions<span class="token punctuation">:</span> <a href="/api/specs/schema/types/decorators/operations/Partial.html"><span class="token">Partial</span></a>&lt;<a href="/api/di/types/common/interfaces/InvokeOptions.html"><span class="token">InvokeOptions</span></a>&gt;<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">void</span><span class="token punctuation">;</span>

<span class="token function">bindValue</span><span class="token punctuation">(</span>instance<span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> propertyKey<span class="token punctuation">,</span> expression<span class="token punctuation">,</span> defaultValue <span class="token punctuation">}</span><span class="token punctuation">:</span> <a href="/api/di/types/common/interfaces/InjectablePropertyValue.html"><span class="token">InjectablePropertyValue</span></a><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">void</span><span class="token punctuation">;</span>

<span class="token function">bindConstant</span><span class="token punctuation">(</span>instance<span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> propertyKey<span class="token punctuation">,</span> expression<span class="token punctuation">,</span> defaultValue <span class="token punctuation">}</span><span class="token punctuation">:</span> <a href="/api/di/types/common/interfaces/InjectablePropertyValue.html"><span class="token">InjectablePropertyValue</span></a><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">void</span><span class="token punctuation">;</span>

<span class="token function">bindInterceptor</span><span class="token punctuation">(</span>instance<span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> propertyKey<span class="token punctuation">,</span> useType<span class="token punctuation">,</span> options <span class="token punctuation">}</span><span class="token punctuation">:</span> <a href="/api/di/types/common/interfaces/InjectablePropertyOptions.html"><span class="token">InjectablePropertyOptions</span></a><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">void</span><span class="token punctuation">;</span>
lazyInvoke&lt;T<span class="token punctuation"> = </span><span class="token keyword">any</span>&gt;<span class="token punctuation">(</span>token<span class="token punctuation">:</span> <a href="/api/di/types/common/interfaces/TokenProvider.html"><span class="token">TokenProvider</span></a><span class="token punctuation">)</span><span class="token punctuation">:</span> Promise&lt;<span class="token keyword">any</span>&gt;<span class="token punctuation">;</span>

<span class="token function">emit</span><span class="token punctuation">(</span>eventName<span class="token punctuation">:</span> <span class="token keyword">string</span><span class="token punctuation">,</span> ...args<span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span> Promise&lt;<span class="token keyword">void</span>&gt;<span class="token punctuation">;</span>

alter&lt;T<span class="token punctuation"> = </span><span class="token keyword">any</span>&gt;<span class="token punctuation">(</span>eventName<span class="token punctuation">:</span> <span class="token keyword">string</span><span class="token punctuation">,</span> value<span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">,</span> ...args<span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span> T<span class="token punctuation">;</span>

alterAsync&lt;T<span class="token punctuation"> = </span><span class="token keyword">any</span>&gt;<span class="token punctuation">(</span>eventName<span class="token punctuation">:</span> <span class="token keyword">string</span><span class="token punctuation">,</span> value<span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">,</span> ...args<span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span> Promise&lt;T&gt;<span class="token punctuation">;</span>
<span class="token function">destroy</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> Promise&lt;<span class="token keyword">void</span>&gt;<span class="token punctuation">;</span>
<span class="token keyword">protected</span> <span class="token function">ensureProvider</span><span class="token punctuation">(</span>token<span class="token punctuation">:</span> <a href="/api/di/types/common/interfaces/TokenProvider.html"><span class="token">TokenProvider</span></a><span class="token punctuation">)</span><span class="token punctuation">:</span> <a href="/api/di/types/common/domain/Provider.html"><span class="token">Provider</span></a> | undefined<span class="token punctuation">;</span>
<span class="token keyword">protected</span> <span class="token function">getInstance</span><span class="token punctuation">(</span>token<span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">any</span><span class="token punctuation">;</span>

<span class="token keyword">protected</span> resolve&lt;T&gt;<span class="token punctuation">(</span>target<span class="token punctuation">:</span> <a href="/api/di/types/common/interfaces/TokenProvider.html"><span class="token">TokenProvider</span></a><span class="token punctuation">,</span> locals?<span class="token punctuation">:</span> <a href="/api/di/types/common/domain/LocalsContainer.html"><span class="token">LocalsContainer</span></a><span class="token punctuation">,</span> options?<span class="token punctuation">:</span> <a href="/api/specs/schema/types/decorators/operations/Partial.html"><span class="token">Partial</span></a>&lt;<a href="/api/di/types/common/interfaces/InvokeOptions.html"><span class="token">InvokeOptions</span></a>&lt;T&gt;&gt;<span class="token punctuation">)</span><span class="token punctuation">:</span> T | Promise&lt;T&gt;<span class="token punctuation">;</span>

}

# Description

This service contain all services collected by @Service or services declared manually with InjectorService.factory() or InjectorService.service().

# Example:

import {InjectorService} from "@tsed/di";

// Import the services (all services are decorated with @Service()";
import MyService1 from "./services/service1";
import MyService2 from "./services/service2";
import MyService3 from "./services/service3";

// When all services are imported, you can load InjectorService.
const injector = new InjectorService()

await injector.load();

const myService1 = injector.get<MyService1>(MyServcice1);
1
2
3
4
5
6
7
8
9
10
11
12
13

# Members

#private;

settings: DIConfiguration;

logger: DILogger;

get resolvers(): import("..").DIResolver[];

get scopes(): Record<string, ProviderScope>;

scopeOf(provider: Provider): ProviderScope;

Retrieve default scope for a given provider.


toArray(): any[];

Return a list of instance build by the injector.


get<T = any>(token: TokenProvider<T>, options?: any): T | undefined;
Param Type Description
token TokenProvider The class or symbol registered in InjectorService.

Get a service or factory already constructed from his symbol or class.

# Example

import {InjectorService} from "@tsed/di";
import MyService from "./services";

class OtherService {
     constructor(injectorService: InjectorService) {
         const myService = injectorService.get<MyService>(MyService);
     }
}
1
2
3
4
5
6
7
8

getMany<Type = any>(type: any, locals?: LocalsContainer, options?: Partial<InvokeOptions<Type>>): Type[];

Return all instance of the same provider type


has(token: TokenProvider): boolean;

The has() method returns a boolean indicating whether an element with the specified key exists or not.


alias(token: TokenProvider, alias: TokenProvider): this;

invoke<T = any>(token: TokenProvider, locals?: LocalsContainer, options?: Partial<InvokeOptions<T>>): T;
Param Type Description
token TokenProvider The injectable class to invoke. Class parameters are injected according constructor signature. locals

Invoke the class and inject all services that required by the class constructor.

# Example

import {InjectorService} from "@tsed/di";
import MyService from "./services";

class OtherService {
    constructor(injectorService: InjectorService) {
         const myService = injectorService.invoke<MyService>(MyService);
     }
 }
1
2
3
4
5
6
7
8

loadAsync(): Promise<void>;

Build only providers which are asynchronous.


loadSync(): void;

bootstrap(container?: Container): this;

Boostrap injector from container and resolve configuration.


loadModule(rootModule: TokenProvider): Promise<void>;

Load injector from a given module


load(container?: Container): Promise<void>;

Build all providers from given container (or GlobalProviders) and emit $onInit event.


resolveConfiguration(): void;

Load all configurations registered on providers


bindInjectableProperties(instance: any, locals: LocalsContainer, options: Partial<InvokeOptions>): void;

bindProperty(instance: any, { propertyKey, resolver, options }: InjectablePropertyOptions, locals: LocalsContainer, invokeOptions: Partial<InvokeOptions>): void;

Create an injectable property.


bindValue(instance: any, { propertyKey, expression, defaultValue }: InjectablePropertyValue): void;

bindConstant(instance: any, { propertyKey, expression, defaultValue }: InjectablePropertyValue): void;

bindInterceptor(instance: any, { propertyKey, useType, options }: InjectablePropertyOptions): void;

lazyInvoke<T = any>(token: TokenProvider): Promise<any>;

emit(eventName: string, ...args: any[]): Promise<void>;
Param Type Description
eventName string The event name to emit at all services. args

Emit an event to all service. See service lifecycle hooks.


alter<T = any>(eventName: string, value: any, ...args: any[]): T;

alterAsync<T = any>(eventName: string, value: any, ...args: any[]): Promise<T>;

destroy(): Promise<void>;

protected ensureProvider(token: TokenProvider): Provider | undefined;

protected getInstance(token: any): any;

protected resolve<T>(target: TokenProvider, locals?: LocalsContainer, options?: Partial<InvokeOptions<T>>): T | Promise<T>;

Invoke a class method and inject service.

# IInjectableMethod options

  • target: Optional. The class instance.
  • methodName: string Optional. The method name.
  • designParamTypes: any[] Optional. List of injectable types.
  • locals: Map<Function, any> Optional. If preset then any argument Class are read from this object first, before the InjectorService is consulted.

# Example