2016-09-13 5 views
3

モジュールが角2で動作するのに苦労しています。 問題を示すa plunkを作成しました。 plunkでは、app.moduleがあることがわかります。このモジュールは、ページヘッダーを表示するコンポーネントを含むapp-common.moduleをインポートします。最上位コンポーネントのテンプレートapp.componentには、このコンポーネントのセレクタが含まれています。フィーチャモジュールで宣言されたコンポーネントが角2で見つかりません

アプリケーションが実行される
@NgModule({ 
imports:  [AppCommonModule, BrowserModule], 
declarations: [AppComponent ], 
bootstrap: [ AppComponent ] 
}) 
export class AppModule { } 

、それは "REF-pageheaderは" 知ら要素ではないというエラーがスローされます。

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

ここapp.moduleです: ここapp.common.moduleです。 app.moduleでコンポーネントを宣言すると、正常に動作します。 したがって、メインのapp.moduleにインポートされるモジュールでこのコンポーネントを宣言できないのはなぜですか?これが行われたときAngularはそれを見つけることができないようです。私は間違って何をしていますか?何か不足していますか?

答えて

6

は、私はあなたがそれが好きでエクスポートする必要がありますね:

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

この方法で、他のコンポーネントは、コンポーネントを使用することができます。

そうでない場合PageHeaderComponentのみ我々は ContactModuleをインポートContactComponentので、他のモジュールがそれを含めることができエクスポート

AppCommonModule

参照の内部で利用できるようになりますコンポーネントテンプレート。

他のすべての宣言の接触クラスは、他のモジュール内のコンポーネントは、そのテンプレートで参照する ことができるはずデフォルト

輸出申告のクラスでプライベートです。これらはあなたのパブリッククラスです。 クラスをエクスポートしない場合、クラスはプライベートのままです。このモジュールで宣言されている他の コンポーネントにのみ表示されます。

+0

驚くばかり!私はこれを完全に逃した!ありがとうございました。 –

+0

よろしくお願いします! material2のソースコードhttps://github.com/angular/material2/blob/master/src/lib/button/button.ts#L162もご覧ください。それは非常に良い出発点です – yurzui

+0

あなたは大きな助けになります!シンプルだけど、私はそれを逃した!再度、感謝します。 –

関連する問題