【问题标题】:Angular LoadChildren string format deprecated but function format results in errorAngular LoadChildren 字符串格式已弃用,但函数格式会导致错误
【发布时间】:2019-05-21 17:24:59
【问题描述】:

Angular 8(现在任何一天到期)不推荐使用字符串格式来路由 LoadChildren,具体如下: type LoadChildren = LoadChildrenCallback | DeprecatedLoadChildren; 来自https://next.angular.io/api/router/LoadChildren

在使用 JIT 的 DEV 中一切正常,但在使用 AOT 的 --prod 中延迟加载模块在尝试路由到该模块时会引发以下错误:

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

我现在可以继续使用字符串格式并忽略弃用警告,但最好绕过弃用警告并拥有正常运行的代码。

工作字符串方法:

{
   path: 'admin',
   loadChildren: './admin/admin.module#AdminModule'
},

失败的函数方法:

{
   path: 'admin', 
   loadChildren: ():Promise<typeof AdminModule> =>
       import('./admin/admin.module').then(m => m.AdminModule)
},

我在最近的几个 beta 和 rc 中遇到过这个问题。

还有其他人找到解决此问题的方法吗?

【问题讨论】:

  • 好博文;感谢您的参考。从那篇文章看来,似乎别无选择,只能忍受弃用警告,直到可以切换到常春藤,这可能需要几个月的时间。大约一个月前我尝试了 Ivy,它肯定会减慢开发迭代,所以在我看来,它不值得开启。

标签: angular angular-cli angular-router


【解决方案1】:

你尝试过这样的事情吗?

[{
  path: 'lazy',
  loadChildren: () => import('./lazy-route/lazy.module').then(mod => mod.LazyModule),
}];

该链接适用于更新版本的 Angular,但提供一些想法可能会有所帮助。 https://angular.io/api/router/LoadChildrenCallback

【讨论】:

    【解决方案2】:

    这是known issue。它看起来像新的IVY renderer could provide a solution

    【讨论】:

      猜你喜欢
      • 2011-01-27
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多