延迟加载的功能模块上的Angular6入口组件

时间:2018-08-26 17:32:12

标签: angular6 angular-module

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

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 {

}

根AppModule

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {
}

root RoutingModule

const routes: Routes = [
    {
      path: 'messages',
      loadChildren: './messages/messages.module#MessagesModule',
    }
  ];

@NgModule({
  imports: [
    RouterModule.forRoot(routes)
  ],
  exports: [RouterModule],
  providers: []
})
export class AppRoutingModule {

}

我知道,当我在AppModule上声明入口组件时,此方法有效,但为什么在功能模块上不起作用?

1 个答案:

答案 0 :(得分:0)

目前似乎不支持此功能,并且该问题被标记为“功能”。

https://github.com/angular/angular/issues/14324#issuecomment-433389833

  

建议的解决方案:即使这与模块化设计背道而驰   我认为Angular本身会采用   创建动态组件可以通过简单地附加   LazyModule的entryComponents到RootInjector的entryComponents和   以避免在每次浏览时淹没RootInjector(   销毁LazyModule),先前注入的entryComponents   将从阵列中删除。