【发布时间】:2019-11-18 00:14:35
【问题描述】:
出于某种正当原因,我试图从我的 Angular 6 应用程序中删除路由(在这种情况下是懒惰的)。我正在使用NgModuleFactoryLoader 加载动态组件和模块。参考下面的文章
https://netbasal.com/the-need-for-speed-lazy-load-non-routable-modules-in-angular-30c8f1c33093
所以我有一个惰性模块ModuleA,它依赖于mat-dialog,它加载一个名为FilterComponent 的组件,该组件是另一个模块FilterModule 提供的entryComponent 的一部分(已添加到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 中也有一个未解决的错误,但我很好奇惰性路由如何正常工作。
【问题讨论】:
标签: angular angular-material angular6