出于某些正当的原因,我试图从我的angular 6应用中删除路由(在这种情况下为懒惰)。我正在使用NgModuleFactoryLoader
加载动态组件和模块。请参阅下面的文章
https://netbasal.com/the-need-for-speed-lazy-load-non-routable-modules-in-angular-30c8f1c33093
所以我有一个惰性模块ModuleA
,它依赖于mat-dialog
,该模块加载了另一个模块FilterComponent
提供的entryComponent的名为FilterModule
的组件(已添加到imports数组中)而不是其他任何地方)。
//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中也有一个未解决的错误,但是我很好奇惰性路由如何工作而没有任何问题。
答案 0 :(得分:0)
如果组件是模块的一部分,并且您想在其他模块中使用该组件,
然后将组件放入出口,而不是进入组件。
FilterModule {
declaration: [FilterComponent],
exports: [FilterComponent]
}
现在,每当您将此模块导入任何其他模块时,该组件也可用于其他组件。