Angular 7, отображение компонентов из разных модулей

Есть мультипроектовый апп.

1й под проект:

@NgModule({
  declarations: [
    AppComponent,
    AComponent,
  ],
  imports: [
    BrowserModule,
    AngularMaterialModule,
    ReactiveFormsModule
  ],
  providers: providers,
  exports: [
    AComponent
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

@NgModule({})
export class ComponentASharedModule {
  static forRoot(): ModuleWithProviders {
    return {
      ngModule: AppModule
    };
  }
}

2й подпроект:

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

@NgModule({})
export class ComponentBSharedModule {
  static forRoot(): ModuleWithProviders {
    return {
      ngModule: AppModule,
      providers: providers
    };
  }
}

И я хочу создать 3й под проект в котором хочу отобразить AComponent и BComponent. Если я делаю вот так:

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

@NgModule({})
export class ComponentCSharedModule {
  static forRoot(): ModuleWithProviders {
    return {
      ngModule: AppModule
    };
  }
}

То получаю ошибку что AComponent и BComponent is declared in multiple Angular modules: AppModule and AppModule.

Подскажите, пожалуйста, можно ли такое провернуть или надо выносить эти два компонента в главный модуль?


Ответы (1 шт):

Автор решения: Alexander Chernin

Надо импортировать модули, а не компоненты. Компоненты должны быть продекларированы в соответствующих модулях, тогда они будут доступны.

ComponentCSharedModule.ts

...
  declarations: [
    // Только компоненты данного модуля и только те, которые должны быть видны снаружи
  ],
  imports: [
    BrowserModule,
    ComponentASharedModule,
    ComponentBSharedModule,
    AppRoutingModule
  ],
...

Теперь в модуле ComponentCSharedModule доступны компоненты AComponent и BComponent

→ Ссылка