角度延迟加载在 aot / prod 模式下



im 使用 Angular 6,在 Angular 中有两种延迟加载模块的方法:

第一种方法:将模块的路径指定为字符串

{path: 'debug', loadChildren: 'app/global/debug.module/debug.module#DebugModule'},

第二种方法:将模块指定为函数签名

{path: 'login', loadChildren: () => LoginMockModule},

在开发模式下,buth 方法有效,但在生产模式下,第二种方法给我以下错误:

ERROR Error: Uncaught (in promise): Error: Runtime compiler is not loaded Error: Runtime compiler is not loaded

有人可以解释为什么第二种方法在生产模式下不起作用。我想使用此模式,因为

  1. 它不太容易出错,因为 IDE 可以检查模块是否正确导入
  2. 保存以重构/移动模块,因为 IDE 知道导入的模块已移动。

感谢您的帮助

这是angular-cli Github(GitHub问题链接(上反复出现的问题。问题出在 AOT 使用上,因为生产模式默认使用 AOT。你可以找到一个angular-cli开发人员给出的这个简短的解释:

Angular CLI 仅支持通过 loadChildren 字符串语法进行延迟路由检测,而重现则使用函数。由于未通过 AOT 检测和编译延迟路由,因此会出现该错误。

所以。。。剩下的唯一事情就是希望它将在下一个版本中得到修复。与此同时,唯一的方法是使用loadChildren.

最新更新