@@ -152,15 +152,16 @@ export class PageRouterOutlet {
152152 if ( this . locationStrategy . _isPageNavigatingBack ( ) ) {
153153 this . activateOnGoBack ( activatedRoute , providers , outletMap ) ;
154154 } else {
155- this . activateOnGoForward ( activatedRoute , providers , outletMap ) ;
155+ this . activateOnGoForward ( activatedRoute , providers , outletMap , loadedResolver ) ;
156156 }
157157 }
158158
159159 private activateOnGoForward (
160160 activatedRoute : ActivatedRoute ,
161161 providers : ResolvedReflectiveProvider [ ] ,
162- outletMap : RouterOutletMap ) : void {
163- const factory = this . getComponentFactory ( activatedRoute ) ;
162+ outletMap : RouterOutletMap ,
163+ loadedResolver : ComponentFactoryResolver ) : void {
164+ const factory = this . getComponentFactory ( activatedRoute , loadedResolver ) ;
164165
165166 const pageRoute = new PageRoute ( activatedRoute ) ;
166167 providers = [ ...providers , ...ReflectiveInjector . resolve ( [ { provide : PageRoute , useValue : pageRoute } ] ) ] ;
@@ -241,31 +242,19 @@ export class PageRouterOutlet {
241242 }
242243
243244 // NOTE: Using private APIs - potential break point!
244- private getComponentFactory ( activatedRoute : any ) : ComponentFactory < any > {
245+ private getComponentFactory ( activatedRoute : any , loadedResolver : ComponentFactoryResolver ) : ComponentFactory < any > {
245246 const snapshot = activatedRoute . _futureSnapshot ;
246247 const component = < any > snapshot . _routeConfig . component ;
247248 let factory : ComponentFactory < any > ;
248- try {
249- factory = typeof component === 'string' ?
250- snapshot . _resolvedComponentFactory :
251- this . componentFactoryResolver . resolveComponentFactory ( component ) ;
252- } catch ( e ) {
253- if ( ! ( e . constructor . name === "NoComponentFactoryError" ) ) {
254- throw e ;
255- }
256- // TODO: vsavkin uncomment this once ComponentResolver is deprecated
257- // const componentName = component ? component.name : null;
258- // console.warn(
259- // `'${componentName}' not found in precompile array. To ensure all components referred
260- // to by the RouterConfig are compiled, you must add '${componentName}' to the
261- // 'precompile' array of your application component. This will be required in a future
262- // release of the router.`);
263-
264- factory = snapshot . _resolvedComponentFactory ;
249+
250+ if ( loadedResolver ) {
251+ factory = loadedResolver . resolveComponentFactory ( component ) ;
252+ } else {
253+ factory = this . componentFactoryResolver . resolveComponentFactory ( component ) ;
265254 }
255+
266256 return factory ;
267257 }
268-
269258}
270259
271260function log ( msg : string ) {
0 commit comments