im使用Angular 6,并且有两种方法可以在Angular中进行延迟加载模块:
第一种方法:将模块路径指定为字符串
{path: 'debug', loadChildren: 'app/global/debug.module/debug.module#DebugModule'},
第二种方法:将模块指定为功能签名
{path: 'login', loadChildren: () => LoginMockModule},
在dev模式下,buth方法有效,但是在prod模式下,第二种方法给我以下错误:
ERROR Error: Uncaught (in promise): Error: Runtime compiler is not loaded Error: Runtime compiler is not loaded
有人可以解释为什么第二种方法在生产模式下不起作用。我想使用此模式,因为
感谢您的帮助
答案 0 :(得分:1)
这是在angular-cli Github(GitHub issue link)上经常出现的问题。问题在于AOT的使用,因为默认情况下prod模式使用AOT。您可以找到由angular-cli开发人员之一提供的简短说明:
Angular CLI仅通过loadChildren字符串语法支持惰性路由检测,而repro则使用函数。由于没有检测到并通过AOT编译了惰性路由,因此出现了该错误。
所以...剩下的唯一一件事就是希望它将在以后的发行版中得到修复。同时,唯一的方法是使用loadChildren
。