# Class InjectorService
ClassModule | 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<<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>><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<T<span class="token punctuation"> = </span><span class="token keyword">any</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><T><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<<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>><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><<a href="/api/di/types/common/interfaces/InvokeOptions.html"><span class="token">InvokeOptions</span></a><<a href="/api/core/types/domain/Type.html"><span class="token">Type</span></a>>><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<T<span class="token punctuation"> = </span><span class="token keyword">any</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> 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><<a href="/api/di/types/common/interfaces/InvokeOptions.html"><span class="token">InvokeOptions</span></a><T>><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<<span class="token keyword">void</span>><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<<span class="token keyword">void</span>><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<<span class="token keyword">void</span>><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><<a href="/api/di/types/common/interfaces/InvokeOptions.html"><span class="token">InvokeOptions</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">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><<a href="/api/di/types/common/interfaces/InvokeOptions.html"><span class="token">InvokeOptions</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">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<T<span class="token punctuation"> = </span><span class="token keyword">any</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> Promise<<span class="token keyword">any</span>><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<<span class="token keyword">void</span>><span class="token punctuation">;</span>
alter<T<span class="token punctuation"> = </span><span class="token keyword">any</span>><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<T<span class="token punctuation"> = </span><span class="token keyword">any</span>><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<T><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<<span class="token keyword">void</span>><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<T><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><<a href="/api/di/types/common/interfaces/InvokeOptions.html"><span class="token">InvokeOptions</span></a><T>><span class="token punctuation">)</span><span class="token punctuation">:</span> T | Promise<T><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);
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);
}
}
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);
}
}
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
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 theInjectorService
is consulted.