UNPKG

static-injector

Version:

Angular 依赖注入独立版本;Angular dependency injection standalone version

106 lines (105 loc) 4.37 kB
/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.dev/license */ import { InjectorMarkers } from './injector_marker'; import { InjectFlags, InjectOptions } from './interface/injector'; import { Provider, StaticProvider } from './interface/provider'; import { ProviderToken } from './provider_token'; /** * Concrete injectors implement this interface. Injectors are configured * with [providers](guide/di/dependency-injection-providers) that associate * dependencies of various types with [injection tokens](guide/di/dependency-injection-providers). * * @see [DI Providers](guide/di/dependency-injection-providers). * @see {@link StaticProvider} * * @usageNotes * * The following example creates a service injector instance. * * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'} * * ### Usage example * * {@example core/di/ts/injector_spec.ts region='Injector'} * * `Injector` returns itself when given `Injector` as a token: * * {@example core/di/ts/injector_spec.ts region='injectInjector'} * * @publicApi */ export declare abstract class Injector { static THROW_IF_NOT_FOUND: {}; static NULL: Injector; /** * Internal note on the `options?: InjectOptions|InjectFlags` override of the `get` * method: consider dropping the `InjectFlags` part in one of the major versions. * It can **not** be done in minor/patch, since it's breaking for custom injectors * that only implement the old `InjectorFlags` interface. */ /** * Retrieves an instance from the injector based on the provided token. * @returns The instance from the injector if defined, otherwise the `notFoundValue`. * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`. */ abstract get<T>(token: ProviderToken<T>, notFoundValue: undefined, options: InjectOptions & { optional?: false; }): T; /** * Retrieves an instance from the injector based on the provided token. * @returns The instance from the injector if defined, otherwise the `notFoundValue`. * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`. */ abstract get<T>(token: ProviderToken<T>, notFoundValue: null | undefined, options: InjectOptions): T | null; /** * Retrieves an instance from the injector based on the provided token. * @returns The instance from the injector if defined, otherwise the `notFoundValue`. * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`. */ abstract get<T>(token: ProviderToken<T>, notFoundValue?: T, options?: InjectOptions | InjectFlags): T; /** * Retrieves an instance from the injector based on the provided token. * @returns The instance from the injector if defined, otherwise the `notFoundValue`. * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`. * @deprecated use object-based flags (`InjectOptions`) instead. */ abstract get<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T; /** * @deprecated from v4.0.0 use ProviderToken<T> * @suppress {duplicate} */ abstract get(token: any, notFoundValue?: any): any; /** * @deprecated from v5 use the new signature Injector.create(options) */ static create(providers: StaticProvider[], parent?: Injector): Injector; /** * Creates a new injector instance that provides one or more dependencies, * according to a given type or types of `StaticProvider`. * * @param options An object with the following properties: * * `providers`: An array of providers of the [StaticProvider type](api/core/StaticProvider). * * `parent`: (optional) A parent injector. * * `name`: (optional) A developer-defined identifying name for the new injector. * * @returns The new injector instance. * */ static create(options: { providers: Array<Provider | StaticProvider>; parent?: Injector; name?: string; }): Injector; /** @nocollapse */ static ɵprov: unknown; /** * @internal * @nocollapse */ static __NG_ELEMENT_ID__: InjectorMarkers; }