延迟加载特征模块上的 Angular6 入口组件



是否可以在延迟加载的功能模块上声明条目组件? 我收到这样的错误:

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的入口组件和 以避免淹没根注入器,每当您导航出去( 破坏了懒惰模块(,之前注入的条目组件 将从阵列中删除。

最新更新