2016-09-28 56 views
1

一個分量I創建DynamicForm組件它連接兩個NgModule。Angular2 - 聲明在兩個不同的模塊

// Module 1 
@NgModule({ 
    imports: [], 
    exports: [], 
    declarations: [ 
     DynamicForm 
    ], 
    providers: [] 
}) 

// Module 2 
@NgModule({ 
    imports: [], 
    exports: [], 
    declarations: [ 
     DynamicForm 
    ], 
    providers: [] 
}) 

但項目不工作,任何錯誤。當我從NgModule之一刪除DynamicForm得到錯誤,我需要包括這個組件。另外我tryed DynamicForm連接到app.module和NgModule刪除,也我以前不工作。

怎麼辦?

+0

你得到什麼錯誤?你能告訴你的app.module – Riv

回答

3

組件只能一個模塊的一部分。因此,如果您有一個應該由多個模塊使用的組件,請創建一個共享模塊,在那裏聲明它,然後導出,以便其他人可以使用它。然後導入共享的模塊在你需要該組件

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

@NgModule({ 
    imports: [ SharedModule ] 
}) 
class ModuleThatNeedsDynamicForm {} 
+1

這似乎是這樣一個愚蠢的設計模式,我們應該能頂模塊中聲明一個組件,然後在它下面的每個模塊應該能夠找到它:| – Chrillewoodz

0

用戶擴展模塊:@peeskillet回答

兩個在兩個不同的模塊聲明組件的方式:

  1. 由於在@peeskillet答案中建議,創建一個共享模塊並在那裏聲明你的組件(以及任何其他共享組件),然後將共享模塊導入到另一個模塊中,以便將共享組件作爲依賴項使用。

  2. 創建依賴組件本身就是一個獨立的模塊,並且要使用共享組件作爲依賴其他模塊進口部件模塊。這樣做的好處是你只需要導入你想要的而不是共享模塊中的其他組件。

import { NgModule } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 
import { MyComponent } from './my.component'; 

@NgModule({ 
    imports: [ 
    CommonModule 
    ], 
    exports: [MyComponent], 
    declarations: [MyComponent] 
}) 
export class MyComponentModule { } 
相關問題