【问题标题】:LazyLoad Module in AngularAngular 中的 LazyLoad 模块
【发布时间】:2017-07-10 05:05:13
【问题描述】:

我关注这个博客是为了 Lazy Lodaing a Module

一切都很好,除了它要求我为要加载的模块分配静态路径的部分。

模块的名称将取决于用户的选择,因为我可能有多个模块

如何在路由中将变量分配给 loadChildren 以及如何在路由之前创建此变量

{ path: 'lazy', loadChildren: 'lazy/lazy.module#LazyModule' }

【问题讨论】:

    标签: angular lazy-loading ng-modules


    【解决方案1】:

    如果您不使用 Ahead of Time 编译,您可以尝试将函数传递给 loadChildren

    { path: 'lazy', loadChildren: () => 'lazy/lazy.module#' + dynamicModuleName }
    

    【讨论】:

    • Type '() => string' 不可分配给 type 'LoadChildren'。
    • 好吧,如果你使用ng-router-loader 是可能的
    【解决方案2】:

    一种选择是定义您的custom module loader

    另一个选项是使用默认导出。由于路由器使用以下代码:

      private loadAndCompile(path: string): Promise<NgModuleFactory<any>> {
        let [module, exportName] = path.split(_SEPARATOR);
        if (exportName === undefined) {
          exportName = 'default';
        }
    

    要加载一个模块,你可以导出默认模块并且根本不传递任何模块名称:

    export default class MyModule {}
    

    【讨论】:

    • 收到此错误,类型 '() => string' 不可分配给类型 'LoadChildren'。
    • 这是您在解决方案中遇到的错误还是 Daniel 的错误?
    • 是的。好吧,任何其他方式都可以延迟加载我的模块甚至组件。我有超过 500 个表单,每个表单都是我想根据请求加载表单的组件。所以组件的路由将根据用户的选择来决定
    • 请创建一个plunker
    • 到现在我还没有解决。我正在考虑使用 ui-router,在那里我可能能够定义路径,或者我可能会通过后端代码将一个对象路由到数组(文本文件编辑,虽然我不知道它的含义。我猜它会导致服务器重新启动)
    猜你喜欢
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 2021-06-12
    • 1970-01-01
    • 2016-04-13
    • 2015-02-06
    • 2019-11-28
    相关资源
    最近更新 更多