将模块A导入模块B,但是A已将模块B导入角度

时间:2019-10-30 09:11:56

标签: angular typescript angular8

我有两个模块用户和产品。用户模块已经导入了产品模块以使用ProductListComponent。现在,我想从产品模块中的用户模块导入/使用UserListComponent。但是,当在产品模块中导入用户模块时,会引发循环依赖错误。有没有办法使用其他模块中的每个模块,以便我的逻辑始终停留在其相应的模块中,但是我可以重用其功能?

我当时在想有一个通用/共享模块,该模块可以在其中导入所有其他模块,然后所有其他模块都可以导入该共享模块,因此这将使我的所有模块彼此可用。但是这样做会引发循环依赖性错误,这确实是一个有效错误。

产品模块

@NgModule({
  declarations: [ProductListComponent],
  imports: [
    CommonModule,
    ProductRoutingModule,
  ], exports: [ProductListComponent]
})
export class ProductModule { }

用户模块

@NgModule({
  declarations: [UserListComponent],
  imports: [
    CommonModule,
    UserRoutingModule,
    ProductModule
  ], exports: []
})
export class UserModule { }

我尝试使用共享模块时,看起来像

@NgModule({
  declarations: [],
  imports: [
    CommonModule,
    UserModule,
    ProductModule
  ], exports: []
})
export class SharedModule { }

产品模块

@NgModule({
  declarations: [ProductListComponent],
  imports: [
    CommonModule,
    ProductRoutingModule,
    SharedModule
  ], exports: [ProductListComponent]
})
export class ProductModule { }

用户模块

@NgModule({
  declarations: [UserListComponent],
  imports: [
    CommonModule,
    UserRoutingModule,
    SharedModule
  ], exports: []
})
export class UserModule { }

请帮助我有一种在应用程序中所有其他模块之间共享所有模块的方法,以避免代码重复或使应用程序设计独立。

3 个答案:

答案 0 :(得分:0)

    you need to register that shared module to app.module like this

    App Module



  @NgModule({
      declarations: [],
      imports: [
        SharedModule
      ], exports: []
    })
    export class AppModule { }

    And shared module should look like this


  @NgModule({
      declarations: [ProductListComponent,UserListComponent],
      imports: [
        CommonModule,
        UserModule,
        ProductModule
      ], exports: []
    })
    export class SharedModule { }

 Now you can able to use all the modules
 please don't import modules multiple times

答案 1 :(得分:0)

SharedModule 导入应用模块文件中。

答案 2 :(得分:0)

Ahmad,从不建议/不要求导入共享模块中的每个模块。共享模块用于保留许多模块(如 Header(导航栏),页脚,侧边栏

在您的情况下,如果可以在共享模块中保留各个组件(指令)所需的相同功能(可重用性),然后将SharedModule导入到FeatureModule(在您的情况下为用户/产品),则应该制作一个通用组件/指令)。

  • 如果功能不通用,则仅导出特定的 component(ProductListComponent)并导入该组件的 所需模块(UserModule)中的模块(ProductModule),反之亦然 (ProductModule中的UserListComponent)

如果每个模块中都导入了每个模块,那么使用Angular有什么用。此外,优化会受到很大影响!