1

我在一个名为“按钮模块”的模块中有某些组件,我想在我自己的名为“产品模块”的自定义模块中使用它们。按钮模块中的组件是一个“下拉按钮”组件。我知道我必须创建一个共享模块文件,然后在该模块中导出这些组件。但是我有点困惑,因为我不知道我是否创建了一个共享模块,那么我是否还需要在两个模块的声明中添加这些组件,即按钮和产品模块?建模共享模块文件的完美方法是什么?这是我的代码

按钮.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 { }

产品.module.ts

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

export class ProductsModule { }
4

1 回答 1

2

不,您不能将任何组件添加到两个模块的声明列表中,这将引发错误,您可以仅为该组件创建一个模块并导入其他模块。

@NgModule({

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

export class DropdownButtonsModule { 
}

按钮模块

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

产品模块

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

export class ProductsModule { }
于 2019-08-26T09:38:04.357 回答