perf(core): Make PlatformLocation
tree-shakable (#32154)
Convert `PlatformLocation` into a tree-shakable provider. PR Close #32154
This commit is contained in:
@ -13,6 +13,7 @@ import {APP_BOOTSTRAP_LISTENER, PLATFORM_INITIALIZER} from './application_tokens
|
||||
import {getCompilerFacade} from './compiler/compiler_facade';
|
||||
import {Console} from './console';
|
||||
import {Injectable, InjectionToken, Injector, StaticProvider} from './di';
|
||||
import {INJECTOR_SCOPE} from './di/scope';
|
||||
import {ErrorHandler} from './error_handler';
|
||||
import {DEFAULT_LOCALE_ID} from './i18n/localization';
|
||||
import {LOCALE_ID} from './i18n/tokens';
|
||||
@ -140,7 +141,10 @@ export function createPlatformFactory(
|
||||
providers.concat(extraProviders).concat({provide: marker, useValue: true}));
|
||||
} else {
|
||||
const injectedProviders: StaticProvider[] =
|
||||
providers.concat(extraProviders).concat({provide: marker, useValue: true});
|
||||
providers.concat(extraProviders).concat({provide: marker, useValue: true}, {
|
||||
provide: INJECTOR_SCOPE,
|
||||
useValue: 'platform'
|
||||
});
|
||||
createPlatform(Injector.create({providers: injectedProviders, name: desc}));
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import {Type} from '../interface/type';
|
||||
import {ReflectionCapabilities} from '../reflection/reflection_capabilities';
|
||||
import {getClosureSafeProperty} from '../util/property';
|
||||
|
||||
import {resolveForwardRef} from './forward_ref';
|
||||
import {injectArgs, ɵɵinject} from './injector_compatibility';
|
||||
import {ClassSansProvider, ConstructorSansProvider, ExistingSansProvider, FactorySansProvider, StaticClassSansProvider, ValueProvider, ValueSansProvider} from './interface/provider';
|
||||
|
||||
@ -32,7 +33,7 @@ export function convertInjectableProviderToFactory(
|
||||
return () => valueProvider.useValue;
|
||||
} else if ((provider as ExistingSansProvider).useExisting) {
|
||||
const existingProvider = (provider as ExistingSansProvider);
|
||||
return () => ɵɵinject(existingProvider.useExisting);
|
||||
return () => ɵɵinject(resolveForwardRef(existingProvider.useExisting));
|
||||
} else if ((provider as FactorySansProvider).useFactory) {
|
||||
const factoryProvider = (provider as FactorySansProvider);
|
||||
return () => factoryProvider.useFactory(...injectArgs(factoryProvider.deps || EMPTY_ARRAY));
|
||||
@ -43,7 +44,7 @@ export function convertInjectableProviderToFactory(
|
||||
const reflectionCapabilities = new ReflectionCapabilities();
|
||||
deps = reflectionCapabilities.parameters(type);
|
||||
}
|
||||
return () => new classProvider.useClass(...injectArgs(deps));
|
||||
return () => new (resolveForwardRef(classProvider.useClass))(...injectArgs(deps));
|
||||
} else {
|
||||
let deps = (provider as ConstructorSansProvider).deps;
|
||||
if (!deps) {
|
||||
|
Reference in New Issue
Block a user