2017-01-09 114 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。 –

相關問題