2016-09-13 43 views
3

我正在經歷艱難的時間才能讓模塊在Angular 2中工作。 我已創建a plunk來演示此問題。 在plunk中,你會看到我有app.module。此模塊導入app-common.module,其中包含一個顯示頁眉的組件。頂層組件的模板app.component包含此組件的選擇器。 這裏的app.common.module:Angular 2找不到在我的特性模塊中聲明的組件

@NgModule({ 
imports:[CommonModule, FormsModule], 
declarations: [PageHeaderComponent] 
}) 
export class AppCommonModule { } 

這裏的app.module:

@NgModule({ 
imports:  [AppCommonModule, BrowserModule], 
declarations: [AppComponent ], 
bootstrap: [ AppComponent ] 
}) 
export class AppModule { } 

當應用程序運行時,它引發錯誤認爲 「REF-pageheader」 不是已知的元件。如果我在app.module中聲明組件,它就可以正常工作。 那麼,爲什麼我不能在一個導入到主app.module的模塊中聲明這個組件?看來Angular在完成這個任務時找不到它。我究竟做錯了什麼?我錯過了什麼嗎?

回答

6

我想你應該導出它想:

@NgModule({ 
    imports:[CommonModule, FormsModule], 
    declarations: [PageHeaderComponent], 
    exports: [PageHeaderComponent] 
}) 
export class AppCommonModule { } 

這樣的其他組件可以使用組件。

否則PageHeaderComponent將只提供內部AppCommonModule

看到也

我們出口ContactComponent是導入 ContactModule可以將其包含在這樣的其它模塊他們的組件模板。

所有其他聲明的接觸類是私人默認

出口申報類,在其他模塊組件應該 能夠在他們的模板來引用。這些是你的公開課。 如果您不導出類,它將保持私有狀態,只有在此模塊中聲明的其他 組件纔可見。

+0

太棒了!我完全錯過了這一點!謝謝。 –

+0

不客氣!你也可以看一下material2的源代碼https://github.com/angular/material2/blob/master/src/lib/button/button.ts#L162。這是一個非常好的起點 – yurzui

+0

你是一個巨大的幫助!這麼簡單,但我錯過了!再次感謝。 –

相關問題