Skip to content

Commit 7810db1

Browse files
author
vakrilov
committed
Page router outlet fix for 2.2.0
1 parent 9619c5e commit 7810db1

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

Diff for: nativescript-angular/router/page-router-outlet.ts

+16-13
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,17 @@ class RefCache {
6060
export class PageRouterOutlet {
6161
private viewUtil: ViewUtil;
6262
private refCache: RefCache = new RefCache();
63-
private isInitalPage: boolean = true;
63+
private isInitialPage: boolean = true;
6464
private detachedLoaderFactory: ComponentFactory<DetachedLoader>;
6565

6666
private currentActivatedComp: ComponentRef<any>;
6767
private currentActivatedRoute: ActivatedRoute;
6868

6969
public outletMap: RouterOutletMap;
7070

71+
get locationInjector(): Injector { return this.containerRef.injector; }
72+
get locationFactoryResolver(): ComponentFactoryResolver { return this.resolver; }
73+
7174
get isActivated(): boolean {
7275
return !!this.currentActivatedComp;
7376
}
@@ -93,7 +96,7 @@ export class PageRouterOutlet {
9396
@Attribute('name') name: string,
9497
private locationStrategy: NSLocationStrategy,
9598
private componentFactoryResolver: ComponentFactoryResolver,
96-
resolver: ComponentFactoryResolver,
99+
private resolver: ComponentFactoryResolver,
97100
private frame: Frame,
98101
@Inject(DEVICE) device: Device,
99102
@Inject(PAGE_FACTORY) private pageFactory: PageFactory) {
@@ -143,33 +146,33 @@ export class PageRouterOutlet {
143146
* This method in turn is responsible for calling the `routerOnActivate` hook of its child.
144147
*/
145148
activate(
146-
activatedRoute: ActivatedRoute, loadedResolver: ComponentFactoryResolver,
147-
loadedInjector: Injector, providers: ResolvedReflectiveProvider[],
148-
outletMap: RouterOutletMap): void {
149+
activatedRoute: ActivatedRoute, resolver: ComponentFactoryResolver, injector: Injector,
150+
providers: ResolvedReflectiveProvider[], outletMap: RouterOutletMap): void {
149151
this.outletMap = outletMap;
150152
this.currentActivatedRoute = activatedRoute;
151153

152154
if (this.locationStrategy._isPageNavigatingBack()) {
153155
this.activateOnGoBack(activatedRoute, providers, outletMap);
154156
} else {
155-
this.activateOnGoForward(activatedRoute, providers, outletMap, loadedResolver);
157+
this.activateOnGoForward(activatedRoute, providers, outletMap, resolver, injector);
156158
}
157159
}
158160

159161
private activateOnGoForward(
160162
activatedRoute: ActivatedRoute,
161163
providers: ResolvedReflectiveProvider[],
162164
outletMap: RouterOutletMap,
163-
loadedResolver: ComponentFactoryResolver): void {
165+
loadedResolver: ComponentFactoryResolver,
166+
injector: Injector): void {
164167
const factory = this.getComponentFactory(activatedRoute, loadedResolver);
165168

166169
const pageRoute = new PageRoute(activatedRoute);
167170
providers = [...providers, ...ReflectiveInjector.resolve([{ provide: PageRoute, useValue: pageRoute }])];
168171

169-
if (this.isInitalPage) {
170-
log("PageRouterOutlet.activate() inital page - just load component");
171-
this.isInitalPage = false;
172-
const inj = ReflectiveInjector.fromResolvedProviders(providers, this.containerRef.parentInjector);
172+
if (this.isInitialPage) {
173+
log("PageRouterOutlet.activate() initial page - just load component");
174+
this.isInitialPage = false;
175+
const inj = ReflectiveInjector.fromResolvedProviders(providers, injector);
173176
this.currentActivatedComp = this.containerRef.createComponent(factory, this.containerRef.length, inj, []);
174177
this.refCache.push(this.currentActivatedComp, pageRoute, outletMap, null);
175178

@@ -180,7 +183,7 @@ export class PageRouterOutlet {
180183
const pageResolvedProvider = ReflectiveInjector.resolve([
181184
{ provide: Page, useValue: page }
182185
]);
183-
const childInjector = ReflectiveInjector.fromResolvedProviders([...providers, ...pageResolvedProvider], this.containerRef.parentInjector);
186+
const childInjector = ReflectiveInjector.fromResolvedProviders([...providers, ...pageResolvedProvider], injector);
184187
const loaderRef = this.containerRef.createComponent(this.detachedLoaderFactory, this.containerRef.length, childInjector, []);
185188

186189
this.currentActivatedComp = loaderRef.instance.loadWithFactory(factory);
@@ -193,7 +196,7 @@ export class PageRouterOutlet {
193196
activatedRoute: ActivatedRoute,
194197
providers: ResolvedReflectiveProvider[],
195198
outletMap: RouterOutletMap): void {
196-
log("PageRouterOutlet.activate() - Back naviation, so load from cache");
199+
log("PageRouterOutlet.activate() - Back navigation, so load from cache");
197200

198201
this.locationStrategy._finishBackPageNavigation();
199202

0 commit comments

Comments
 (0)