[英]Angular Lazy Loading Modules and entryComponents error
我懶於加載 angular 模塊,在嘗試打開DatesModal
時出現此錯誤:
No component factory found for DatesModal. Did you add it to @NgModule.entryComponents?
我的lazyModule
看起來像這樣:
declarations: [DatesModal] entryComponents: [DatesModal]
我肯定會在DatesModal
的 entryComponents 數組中添加 DatesModal。 有人知道我在這里可能會錯過什么嗎?
如果您需要更多信息來回答這個問題,請告訴我。
看起來您想在其他模塊中獲取/導入此模塊,但是此模塊對其他人不可見。 嘗試導出您的模塊:
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'
}
];
您是否使用任何第三方庫(或您自己)在延遲加載模塊中動態創建此組件?
如果是這樣,您需要將此組件添加到 AppModule 的(或上級非延遲加載模塊) entrycomponents
中。
更多細節你可以看到這個問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.