@@ -3,16 +3,16 @@ import {isBlank, isPresent} from '@angular/core/src/facade/lang';
3
3
import { StringMapWrapper } from '@angular/core/src/facade/collection' ;
4
4
5
5
import {
6
- Attribute , DynamicComponentLoader , ComponentRef ,
6
+ Attribute , ComponentRef ,
7
7
ViewContainerRef , ViewChild , ElementRef ,
8
8
ReflectiveInjector , provide , Type ,
9
- Component , Inject
9
+ Component , Inject , DynamicComponentLoader , ComponentResolver
10
10
} from '@angular/core' ;
11
11
12
12
import * as routerHooks from '@angular/router-deprecated/src/lifecycle/lifecycle_annotations' ;
13
13
import { hasLifecycleHook } from '@angular/router-deprecated/src/lifecycle/route_lifecycle_reflector' ;
14
14
15
- import { Router , RouterOutlet , RouteData , RouteParams , ComponentInstruction ,
15
+ import { Router , RouterOutlet , RouteData , RouteParams , ComponentInstruction ,
16
16
OnActivate , OnDeactivate , OnReuse , CanReuse } from '@angular/router-deprecated' ;
17
17
import { LocationStrategy } from '@angular/common' ;
18
18
import { topmost } from "ui/frame" ;
@@ -78,12 +78,13 @@ export class PageRouterOutlet extends RouterOutlet {
78
78
79
79
constructor (
80
80
private containerRef : ViewContainerRef ,
81
- private loader : DynamicComponentLoader ,
81
+ private compiler : ComponentResolver ,
82
82
private parentRouter : Router ,
83
83
@Attribute ( 'name' ) nameAttr : string ,
84
84
private location : NSLocationStrategy ,
85
+ loader : DynamicComponentLoader ,
85
86
@Inject ( DEVICE ) device : Device
86
- ) {
87
+ ) {
87
88
super ( containerRef , loader , parentRouter , nameAttr ) ;
88
89
this . viewUtil = new ViewUtil ( device ) ;
89
90
}
@@ -135,20 +136,25 @@ export class PageRouterOutlet extends RouterOutlet {
135
136
if ( this . isInitalPage ) {
136
137
log ( "PageRouterOutlet.activate() inital page - just load component: " + componentType . name ) ;
137
138
this . isInitalPage = false ;
138
- resultPromise = this . loader . loadNextToLocation ( componentType , this . containerRef , ReflectiveInjector . resolve ( providersArray ) ) ;
139
+ resultPromise = this . compiler . resolveComponent ( componentType ) . then ( ( componentFactory ) => {
140
+ const childInjector = ReflectiveInjector . resolveAndCreate ( providersArray , this . containerRef . parentInjector ) ;
141
+ return this . containerRef . createComponent ( componentFactory , this . containerRef . length , childInjector , null ) ;
142
+ } ) ;
139
143
} else {
140
144
log ( "PageRouterOutlet.activate() forward navigation - create detached loader in the loader container: " + componentType . name ) ;
141
145
142
146
const page = new Page ( ) ;
143
147
providersArray . push ( provide ( Page , { useValue : page } ) ) ;
144
- resultPromise = this . loader . loadNextToLocation ( DetachedLoader , this . childContainerRef , ReflectiveInjector . resolve ( providersArray ) )
145
- . then ( ( pageComponentRef ) => {
146
- loaderRef = pageComponentRef ;
147
- return ( < DetachedLoader > loaderRef . instance ) . loadComponent ( componentType ) ;
148
- } )
149
- . then ( ( actualCoponenetRef ) => {
150
- return this . loadComponentInPage ( page , actualCoponenetRef ) ;
151
- } )
148
+ const childInjector = ReflectiveInjector . resolveAndCreate ( providersArray , this . containerRef . parentInjector ) ;
149
+
150
+ resultPromise = this . compiler . resolveComponent ( DetachedLoader ) . then ( ( componentFactory ) => {
151
+ loaderRef = this . childContainerRef . createComponent ( componentFactory , this . childContainerRef . length , childInjector , null ) ;
152
+
153
+ return ( < DetachedLoader > loaderRef . instance ) . loadComponent ( componentType )
154
+ . then ( ( actualCoponenetRef ) => {
155
+ return this . loadComponentInPage ( page , actualCoponenetRef ) ;
156
+ } ) ;
157
+ } ) ;
152
158
}
153
159
154
160
return resultPromise . then ( ( componentRef ) => {
0 commit comments