簡體   English   中英

角度路由器延遲加載依賴模塊的入口組件如何工作,但自定義延遲加載模塊沒有問題

[英]How angular router lazy loading dependent modules entryComponents works without issue but not the custom lazy loaded module

出於某些有效的原因,我試圖從我的angular 6應用中刪除路由(在這種情況下為懶惰)。 我正在使用NgModuleFactoryLoader加載動態組件和模塊。 請參閱以下文章

https://netbasal.com/the-need-for-speed-lazy-load-non-routable-modules-in-angular-30c8f1c33093

所以我有一個懶惰的模塊ModuleA ,它依賴於mat-dialog ,它加載了另一個模塊FilterModule提供的entryComponent的名為FilterComponent的組件(已經添加到moduleA的導入數組中,而不是其他任何位置)。

 //Ignore the syntax CompA { openDialog() { matDialog.open(FilterComponent) } } ModuleA { imports: [MatDialog, FilterModule], declaration: [CompA] } FilterModule { declaration: [FilterComponent], entryComponent: [FilterComponent] } FilterComponent { ... } 

有了惰性路由,mat-dialog可以打開FilterComponent而沒有任何問題。 但是,當我嘗試通過使用自定義方法成功加載模塊來打開對話框時,出現以下錯誤

找不到FilterComponent的組件工廠。 您是否將其添加到@ NgModule.entryComponents?

github中也有一個打開的錯誤,但是我很好奇惰性路由如何工作而沒有任何問題。

https://github.com/angular/components/issues/16431

如果某個組件是模塊的一部分,而您想在其他模塊中使用該組件,

然后將組件放置在導出組件中,而不是輸入組件中。

FilterModule {
  declaration: [FilterComponent],
  exports: [FilterComponent]
}

現在,只要將此模塊導入任何其他模塊,該組件也可用於其他組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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