是否可以在延迟加载的功能模块上声明条目组件? 我收到这样的错误:
ERROR Error: No component factory found for NewMessageModalComponent. Did you add it to @NgModule.entryComponents?
这是我的功能模块:
@NgModule({
declarations: [
NewMessageModalComponent
],
imports: [
MessagesRoutingModule
],
entryComponents: [
NewMessageModalComponent
]
})
export class MessagesModule {
}
根应用模块
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {
}
根路由模块
const routes: Routes = [
{
path: 'messages',
loadChildren: './messages/messages.module#MessagesModule',
}
];
@NgModule({
imports: [
RouterModule.forRoot(routes)
],
exports: [RouterModule],
providers: []
})
export class AppRoutingModule {
}
我知道,当我在AppModule上声明入口组件时,这有效,但是为什么不在功能模块上工作呢?
这似乎目前不受支持,该问题被标记为"功能"。
https://github.com/angular/angular/issues/14324#issuecomment-433389833
建议的解决方案:即使这违背了模块化设计 被 Angular 本身采用,我认为复杂性提供了 创建动态组件可以通过简单地附加 LazyModule的入口组件到rootInjector的入口组件和 以避免淹没根注入器,每当您导航出去( 破坏了懒惰模块(,之前注入的条目组件 将从阵列中删除。