Description
I'm submitting a ... (check one with "x")
[x] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
Current behavior
In order to enable lazy loading with Webpack 1, a custom NgModuleFactoryLoader
must be implemented to lazy load routes with loadChildren
. I've implemented an example loader here.
The custom load
function is being used here: https://github.com/brandonroberts/router-cli-aot/blob/master/src/app/app.routing.ts#L12-L25
When running ngc
over the provided repo, an error occurs:
Error: Error encountered resolving symbol values statically. Function calls are not supported. Consider replacing the function or lambda with a reference to an exported function (position 23:24 in the original .ts file), resolving symbol crisisCenterRoutes in /router-cli-aot/src/app/app.routing.ts, resolving symbol appRoutes in /router-cli-aot/src/app/app.routing.ts, resolving symbol routing in /router-cli-aot/src/app/app.routing.ts, resolving symbol AppModule in /router-cli-aot/src/app/app.module.ts, resolving symbol AppModule in /router-cli-aot/src/app/app.module.ts
I can comment out the loadChildren
line and ngc
completes successfully. If I uncomment the line after running ngc
and bundle with webpack, the app works as desired with lazy loading.
While #10705 adds support for using a callback function with loadChildren
such as loadChildren: () => System.import('lazy.module#LazyModule')
, this will cause AoT compilation to fail also with the same error.
Expected/desired behavior
Providing a callback function to loadChildren
does not cause AoT compilation to fail when used
with vanilla webpack or some other bundling tool.
Reproduction of the problem
If the current behavior is a bug or you can illustrate your feature request better with an example, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar (you can use this template as a starting point: http://plnkr.co/edit/tpl:AvJOMERrnz94ekVua0u5).
What is the expected behavior?
What is the motivation / use case for changing the behavior?
Webpack 1/2 use a callback function to provide lazy loading through returning a promise.
Please tell us about your environment:
- Angular version: 2.0.0-rc.5
- Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]
- Language: [all | TypeScript X.X | ES6/7 | ES5]