2017-01-09 91 views
7

我对如何在Angular 2中的模块之间共享组件有疑问。重点是:我在应用程序中有两个模块,'客户模块'和'供应商模块'。如何在Angular 2中的模块之间共享组件?

这两个模块在它们的组件中都使用AddressComponent和EmailComponent。他们也都使用接口地址和电子邮件。

现在,我有很多重复,因为我已经复制和粘贴这两个模块上的这些组件和接口。这是显然只是错误的。

我需要一种方法来导入这两个模块上使用的组件。但我不知道如何去做。

我应该为这个共享的东西创建另一个模块,并在两个导入它?在Angular 2的模块之间共享组件的正确方法是什么?

回答

9

创建共享NgModule,它将具有所有常见的Component/Service/Pipe。这样做可以避免代码重复。它将使代码模块化,可插入&可测试。

为了在其他模块中使用AddressComponent & EmailComponent,你需要从共享模块export他们:

代码

@NgModule({ 
    imports: [CommonModule], 
    declarations: [AddressComponent, EmailComponent], 
    providers: [MySharedService], 
    exports: [AddressComponent, EmailComponent], 
}) 
export class SharedModule() { } 

同时消耗SharedModule,所有你需要做的是进口SharedModule

@NgModule({ 
    imports: [CommonModule, SharedModule, ... ], 
    providers: [..] 
}) 
export class CustomersModule() { } 
+1

我不认为这个工程,不能申报组件两次:http://stackoverflow.com/a/39927548/777285 –

+0

@ArnaudP感谢提出了,我已经删除冗余的声明,谢谢;) –

+0

其实它是其他方式:SharedModule应该是唯一一个声明组件的模块。消费者只需要导入SharedModule。 –

相关问题