Итак, я нашел десятки статей, объясняющих эту проблему, и в большинстве предложений говорится о добавлении моего компонента в массив entryComponents в @NgModule, но я озадачен тем, где или какие записи entryComponents во многих моих модулях .. так что в основном мои зависимости модуля выглядят так:
AppModule
- EnvironmentModule
- ContainerModule
- SharedModule
EnvironmentModule
- ContainerModule
- EnvironmentListItemDetailComponent
private _dialogRef: MatDialogRef<ConfirmDialogComponent>;
ContainerModule
- MatDialogModule,
- ConfirmDialogComponent (this is the component that I want to move)
- ContainerListItemDetailComponent
private _dialogRef: MatDialogRef<ConfirmDialogComponent>;
По сути, я хочу переместить ConfirmDialogComponent из вложенного дочернего модуля в общий модуль, от которого могут зависеть модули Environment и Container. (Я также хотел бы переместить ContainerModule из-под EnvironmentModule, но это на другой день)
Итак, я хочу переместить ConfirmDialogComponent в SharedModule и получить все, что нужно, как выглядит @NgModule для App, Environment, Container, Shared? Я действительно запутался .. так вот что у меня так далеко:
shared.module.ts:
@NgModule({
imports: [
CommonModule,
MatDialogModule,
BrowserAnimationsModule
],
declarations: [
ConfirmDialogComponent
],
exports: [
ConfirmDialogComponent
],
entryComponents: [
ConfirmDialogComponent
]
})
export class SharedModule { }
environment.module.ts:
@NgModule({
imports: [
HttpClientModule,
CommonModule,
FormsModule,
EnvironmentRoutingModule,
ContainerModule
],
declarations: [
EnvironmentListComponent,
EnvironmentListEnvironmentsComponent,
EnvironmentListItemDetailComponent,
EnvironmentListItemComponent
],
providers: [... ]
})
container.module.ts:
@NgModule({
imports: [
FormsModule,
CommonModule,
BrowserAnimationsModule,
MatDialogModule,
ContainerRoutingModule
],
declarations: [
KeysPipe,
ContainerListComponent,
ContainerListItemComponent,
ContainerListItemDetailComponent,
ParameterListComponent,
ParameterListItemComponent,
ParameterTypeInfoComponent,
ConfirmDialogComponent
],
exports: [
ContainerListComponent
],
providers: [...],
entryComponents: [ ConfirmDialogComponent ]
})
app.module.ts:
@NgModule({
declarations: [
AppComponent
],
imports: [
FormsModule,
BrowserModule,
AppRoutingModule,
HttpModule,
ContainerModule,
EnvironmentModule,
LoginModule,
SharedModule,
PageNotFoundModule /* DO NOT MOVE THIS - as a result of routing peculiarities the order of child routes matter for handling wildcard ** https://stackoverflow.com/questions/40015385/angular-2-router-wildcard-handling-with-child-routes */
],
providers: [
AppConfigService,
AuthGuardService,
BootstrapService,
EventBrokerService,
HttpClientService,
TruIdTokenService,
StartupService,
{
provide: APP_INITIALIZER,
useFactory: initConfiguration,
deps: [StartupService],
multi: true
}
],
bootstrap: [AppComponent]
})
Так что я не знаю: \ это немного беспорядок, и я даже не уверен, что все мои зависимости организованы правильно.