簡體   English   中英

Angular 延遲加載模塊和入口組件錯誤

[英]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 文檔所說:

對於生產應用程序,您希望加載盡可能少的代碼。 代碼應僅包含您實際需要的類,並排除從未使用過的組件。 出於這個原因,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM