Входной компонент Angular6 на лениво загруженном функциональном модуле - PullRequest
0 голосов
/ 26 августа 2018

Возможно ли объявить входные компоненты на лениво загруженном функциональном модуле?Я получаю такую ​​ошибку, как это:

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 {

}

root 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 голосов
/ 05 ноября 2018

Это, кажется, в настоящее время не поддерживается, и проблема помечена как «особенность».

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

Предлагаемое решение: Даже если это идет вразрез с модульной конструкциейПринятое самим Angular, я думаю, что сложность, обеспечиваемую для создания динамических компонентов, может быть смягчена простым добавлением entryComponents элемента LazyModule к элементу entryComponents элемента RootInjector и предотвращением переполнения объекта RootInjector, когда вы выходите из системы (которая разрушает LazyModule), ранее введенные entryComponentsбудет удален из массива.

...