fix(router): incorrect injector is used when instantiating components loaded lazily (#12817)

This commit is contained in:
Victor Savkin
2016-11-11 17:12:00 -08:00
committed by Victor Berchet
parent 69dfcf7385
commit 52be848f94
7 changed files with 110 additions and 75 deletions

View File

@ -1095,17 +1095,19 @@ class ActivateRoutes {
const config = parentLoadedConfig(future.snapshot);
let loadedFactoryResolver: ComponentFactoryResolver = null;
let loadedInjector: Injector = null;
let resolver: ComponentFactoryResolver = null;
let injector: Injector = null;
if (config) {
loadedFactoryResolver = config.factoryResolver;
loadedInjector = config.injector;
resolved.push({provide: ComponentFactoryResolver, useValue: loadedFactoryResolver});
injector = config.injectorFactory(outlet.locationInjector);
resolver = config.factoryResolver;
resolved.push({provide: ComponentFactoryResolver, useValue: resolver});
} else {
injector = outlet.locationInjector;
resolver = outlet.locationFactoryResolver;
}
outlet.activate(
future, loadedFactoryResolver, loadedInjector, ReflectiveInjector.resolve(resolved),
outletMap);
outlet.activate(future, resolver, injector, ReflectiveInjector.resolve(resolved), outletMap);
}
private deactiveRouteAndItsChildren(