@@ -4,9 +4,9 @@ import * as ts from 'typescript';
44
55import { __NGTOOLS_PRIVATE_API_2 } from '@angular/compiler-cli' ;
66import { AngularCompilerOptions } from '@angular/tsc-wrapped' ;
7+ const ContextElementDependency = require ( 'webpack/lib/dependencies/ContextElementDependency' ) ;
78
89import { WebpackResourceLoader } from './resource_loader' ;
9- import { createResolveDependenciesFromContextMap } from './utils' ;
1010import { WebpackCompilerHost } from './compiler_host' ;
1111import { resolveEntryModuleFromMain } from './entry_resolver' ;
1212import { Tapable } from './webpack' ;
@@ -194,45 +194,30 @@ export class AotPlugin implements Tapable {
194194 apply ( compiler : any ) {
195195 this . _compiler = compiler ;
196196
197+ // Add lazy modules to the context module for @angular /core/src/linker
197198 compiler . plugin ( 'context-module-factory' , ( cmf : any ) => {
198- cmf . plugin ( 'before-resolve' , ( request : any , callback : ( err ?: any , request ?: any ) => void ) => {
199- if ( ! request ) {
200- return callback ( ) ;
201- }
202-
203- // alter only request from @angular /core/src/linker
204- if ( ! request . context . endsWith ( path . join ( '@angular/core/src/linker' ) ) ) {
205- return callback ( null , request ) ;
206- }
207-
208- request . request = this . skipCodeGeneration ? this . basePath : this . genDir ;
209- request . recursive = true ;
210- request . dependencies . forEach ( ( d : any ) => d . critical = false ) ;
211- return callback ( null , request ) ;
212- } ) ;
213199 cmf . plugin ( 'after-resolve' , ( result : any , callback : ( err ?: any , request ?: any ) => void ) => {
214200 if ( ! result ) {
215201 return callback ( ) ;
216202 }
217203
218- // there is no way to find the original request, so try to
219- // match request from @angular /core/src/linker as best as possible
220- if (
221- result . resource == ( this . skipCodeGeneration ? this . basePath : this . genDir )
222- && result . recursive == true
223- && result . dependencies . every ( ( d : any ) => d . critical == false )
224- ) {
225- this . done . then ( ( ) => {
226- result . resolveDependencies = createResolveDependenciesFromContextMap (
227- this . _lazyRoutes ,
228- result . resolveDependencies
229- ) ;
230- return callback ( null , result ) ;
231- } , ( ) => callback ( null ) )
232- . catch ( err => callback ( err ) ) ;
233- } else {
204+ // alter only request from @angular /core/src/linker
205+ if ( ! result . resource . endsWith ( path . join ( '@angular/core/src/linker' ) ) ) {
234206 return callback ( null , result ) ;
235207 }
208+
209+ this . done . then ( ( ) => {
210+ result . resource = this . skipCodeGeneration ? this . basePath : this . genDir ;
211+ result . recursive = true ;
212+ result . dependencies . forEach ( ( d : any ) => d . critical = false ) ;
213+ result . resolveDependencies = ( p1 : any , p2 : any , p3 : any , p4 : RegExp , cb : any ) => {
214+ const dependencies = Object . keys ( this . _lazyRoutes )
215+ . map ( ( key ) => new ContextElementDependency ( this . _lazyRoutes [ key ] , key ) ) ;
216+ cb ( null , dependencies ) ;
217+ } ;
218+ return callback ( null , result ) ;
219+ } , ( ) => callback ( null ) )
220+ . catch ( err => callback ( err ) ) ;
236221 } ) ;
237222 } ) ;
238223
0 commit comments