首页 > 解决方案 > Angular - 在 loadChildren() 中使用 forRoot({}) 配置来配置延迟加载模块

问题描述

我想要一个可配置的加载模块。理论上,我想要一个模块,它自己更大的应用程序确实接收一些配置。根据主应用程序发送的配置显示/加载某些元素。

我将它与其他模块一起使用,但那些不是lazyLoaded的模块。我尝试并四处搜索,但没有看到类似以下内容的用法:

 children: [
      {
        path: 'application-module',
        loadChildren: () => import('@application-module').then(m => m.ApplicationModule.forRoot({
         foo:'bar'
        }))
      }
    ]

这甚至可能吗?如果我使用它,我会收到错误 error: Error: No NgModule metadata found for '[object Object]'. ,这在您加载的模块未定义时很常见。

还是我走错了路,有更好的解决方案吗?谢谢

标签: angularlazy-loadingng-modules

解决方案


我想您可以尝试一件事,因为您现在正在做的事情将行不通。原因是 loadChildren 需要一个带有 @module 装饰器的类。

你给它的是一个静态函数。

你可以尝试这样做:

children: [
      {
        path: 'application-module',
        loadChildren: () => import('@application-module').then(m => { m.ApplicationModule.forRoot({foo: 'bar'}); return m.ApplicationModule; } )
    }))
      }
    ]

我不知道这是否会奏效。

另一种选择是寻求服务或通过接收延迟加载模块路由中的路由。


推荐阅读