angular - 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]'.
,这在您加载的模块未定义时很常见。
还是我走错了路,有更好的解决方案吗?谢谢
解决方案
我想您可以尝试一件事,因为您现在正在做的事情将行不通。原因是 loadChildren 需要一个带有 @module 装饰器的类。
你给它的是一个静态函数。
你可以尝试这样做:
children: [
{
path: 'application-module',
loadChildren: () => import('@application-module').then(m => { m.ApplicationModule.forRoot({foo: 'bar'}); return m.ApplicationModule; } )
}))
}
]
我不知道这是否会奏效。
另一种选择是寻求服务或通过接收延迟加载模块路由中的路由。
推荐阅读
- c# - Json.NET JsonConvert.SerializeObject 类型不兼容
- android - 即使 MediaPlayer 已经在播放声音,如何在单击按钮时播放声音?
- c# - 使用列表
在 Kentico 电子邮件模板中的宏 - javascript - 如何编码本地存储中的图像数组?
- python-3.x - pyinstaller pyqt5 configparser.nosectionerror:no section "png_path": failed to execute script .py
- python-3.x - 在“exec”函数之后,locals() 中无法访问的变量
- c# - 如何发送包含任何视频文件的电子邮件
- flutter - 用前置摄像头录制视频时屏幕变暗变窄
- firebase - firebaseui 不呈现登录 html
- scala - 如何在scala中设置neo4j-java-driver和gremlin-scala