fix(core): export inject() from @angular/core (#22389)
inject() supports the ngInjectableDef-based configuration of the injector (otherwise known as tree-shakeable services). It was missing from the exported API of @angular/core, this PR adds it. The test added here is correct in theory, but may pass accidentally due to the decorator side-effect replacing the inject() call at runtime. An upcoming compiler PR will strip reified decorators from the output entirely. Fixes #22388 PR Close #22389
This commit is contained in:

committed by
Alex Eagle

parent
7d65356ae3
commit
f8749bfb70
@ -12,6 +12,7 @@ export {devModeEqual as ɵdevModeEqual} from './change_detection/change_detectio
|
||||
export {isListLikeIterable as ɵisListLikeIterable} from './change_detection/change_detection_util';
|
||||
export {ChangeDetectorStatus as ɵChangeDetectorStatus, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy} from './change_detection/constants';
|
||||
export {Console as ɵConsole} from './console';
|
||||
export {setCurrentInjector as ɵsetCurrentInjector} from './di/injector';
|
||||
export {ComponentFactory as ɵComponentFactory} from './linker/component_factory';
|
||||
export {CodegenComponentFactoryResolver as ɵCodegenComponentFactoryResolver} from './linker/component_factory_resolver';
|
||||
export {ReflectionCapabilities as ɵReflectionCapabilities} from './reflection/reflection_capabilities';
|
||||
|
@ -17,7 +17,7 @@ export {defineInjectable, Injectable, InjectableDecorator, InjectableProvider, I
|
||||
|
||||
export {forwardRef, resolveForwardRef, ForwardRefFn} from './di/forward_ref';
|
||||
|
||||
export {InjectFlags, Injector} from './di/injector';
|
||||
export {inject, InjectFlags, Injector} from './di/injector';
|
||||
export {ReflectiveInjector} from './di/reflective_injector';
|
||||
export {StaticProvider, ValueProvider, ExistingProvider, FactoryProvider, Provider, TypeProvider, ClassProvider} from './di/provider';
|
||||
export {ResolvedReflectiveFactory, ResolvedReflectiveProvider} from './di/reflective_provider';
|
||||
|
@ -410,6 +410,20 @@ export function setCurrentInjector(injector: Injector | null): Injector|null {
|
||||
return former;
|
||||
}
|
||||
|
||||
/**
|
||||
* Injects a token from the currently active injector.
|
||||
*
|
||||
* This function must be used in the context of a factory function such as one defined for an
|
||||
* `InjectionToken`, and will throw an error if not called from such a context. For example:
|
||||
*
|
||||
* {@example core/di/ts/injector_spec.ts region='ShakeableInjectionToken'}
|
||||
*
|
||||
* Within such a factory function `inject` is utilized to request injection of a dependency, instead
|
||||
* of providing an additional array of dependencies as was common to do with `useFactory` providers.
|
||||
* `inject` is faster and more type-safe.
|
||||
*
|
||||
* @experimental
|
||||
*/
|
||||
export function inject<T>(
|
||||
token: Type<T>| InjectionToken<T>, notFoundValue?: undefined, flags?: InjectFlags): T;
|
||||
export function inject<T>(
|
||||
|
Reference in New Issue
Block a user