Общий модуль экспорта

У меня есть определенные компоненты в модуле под названием "модуль кнопок", которые я хотел бы использовать в своем собственном пользовательском модуле под названием "модуль продуктов". Компонент в модуле кнопок является компонентом "раскрывающихся кнопок". Я знаю, что мне нужно создать файл общего модуля, а затем экспортировать эти компоненты в этот модуль. Но я немного сбит с толку, так как не знаю, создаю ли я общий модуль, тогда нужно ли мне добавлять эти компоненты в объявление обоих модулей, т. Е. Кнопок и модуля продуктов? Что было бы идеальным способом для моделирования файла общего модуля? вот мой код

buttons.module.ts

const components = [
  ButtonsComponent,
  DefaultButtonsComponent,
  HeroButtonComponent,
  ShapeButtonsComponent,
  SizeButtonsComponent,
  ActionGroupsComponent,
  DropdownButtonsComponent,
  BlockLevelButtonsComponent,
  ButtonGroupsComponent,
  IconButtonsComponent,
  LabeledActionsGroupComponent,
];

@NgModule({
  imports: [
    ThemeModule
  ],
  exports: [
    ...components,
  ],
  declarations: [
    ...components,
  ],
  providers: [],
})
export class ButtonsModule { }

products.module.ts

@NgModule({
    imports: [ 
        ThemeModule,
        NbCardModule,
        FormsModule,
        ProductsRoutingModule,
        // DropdownButtonsComponent,
    ],
    declarations: [
        ProductsComponent,
        AllproductsComponent,
        AddproductComponent,
    ]
})

export class ProductsModule { }

1 ответ

Решение

Нет, вы не можете добавить какой-либо компонент в список объявлений в двух модулях, это вызовет ошибку, вы можете создать модуль только для этого компонента и импортировать его в другие модули.

@NgModule({

  exports: [
    DropdownButtonsComponent,
  ],
  declarations: [
    DropdownButtonsComponent,
  ],
  providers: [],
})

export class DropdownButtonsModule { 
}

ButtonsModule

@NgModule({
  imports: [
    ThemeModule,
    DropdownButtonsModule 
  ],
  exports: [
    ...components,
  ],
  declarations: [
    ...components,
  ],
  providers: [],
})
export class ButtonsModule { }

ProductsModule

@NgModule({
    imports: [ 
        ThemeModule,
        NbCardModule,
        FormsModule,
        ProductsRoutingModule,
        DropdownButtonsModule ,
    ],
    declarations: [
        ProductsComponent,
        AllproductsComponent,
        AddproductComponent,
    ]
})

export class ProductsModule { }
Другие вопросы по тегам