我懒于加载angular模块,并尝试打开DatesModal
时遇到此错误:
No component factory found for DatesModal. Did you add it to @NgModule.entryComponents?
我的lazyModule
如下:
declarations: [DatesModal]
entryComponents: [DatesModal]
我肯定是在lazyModule的entryComponents数组中添加了DatesModal
。有人知道我在这里可能会错过什么吗?
如果您需要更多信息来回答这个问题,请告诉我。
答案 0 :(得分:0)
您似乎想在其他模块中获取/导入此模块,但是此模块对其他人不可见。尝试导出模块:
exports: [DatesModal]
更新:
对于生产应用程序,您希望加载最小的代码。的 代码应仅包含您实际需要的类, 排除从未使用过的组件。因此,Angular 编译器仅生成可从以下位置访问的组件的代码 entryComponents;这意味着添加更多引用到 @ NgModule.declarations并不意味着它们一定是 包含在最终捆绑包中。 如果某个组件不是输入组件,并且在模板中找不到, 摇树机将其丢弃。因此,最好仅添加 真正是入门组件的组件,可帮助您保持应用程序的状态 尽可能修剪。
要使您的模块被lzay加载,您需要在以下路线中进行操作:
const routes: Routes = [
{
path: 'customers',
loadChildren: () => import('./customers/customers.module').then(mod => mod.CustomersModule)
},
{
path: 'orders',
loadChildren: () => import('./orders/orders.module').then(mod => mod.OrdersModule)
},
{
path: '',
redirectTo: '',
pathMatch: 'full'
}
];
Read this docs about how to make your modules to be lazy loaded.
答案 1 :(得分:0)
您是否曾经使用任何第三方库(或您自己)在延迟加载模块中动态创建此组件?
如果是这样,则需要将此组件添加到AppModule的(或上级非延迟加载模块)entrycomponents
中。
更详细的信息,您可以看到此issue