2016-10-21 6 views
3

今私は、使用する必要があるすべてのものをカバーするために、個々のコンポーネントをまとめてapp.moduleにインポートしています。 app.moduleだけheader.moduleをインポートする必要がありますように、私は理想的にやりたい何独自のコンポーネントを実装するサブモジュールを使用する

AppModule 
    -Header Component 
    -Header Sub-Component 1 
    -Header Sub-Component 2 
    -Header Sub-Component 3 

app.moduleでそれらのすべてをインポートするのではなく、私は、独自のコンポーネントのすべてをインポートハンドルheader.moduleを作成したいとheader.moduleはそれ自身の依存関係を処理します。

私はこれを行う方法は多岐にわたりましたが、うまく動作しないようです。どのような構造が必要ですか?

私はやろうとした

:、ちょうどセットアップモジュール>コンポーネントの関係を取得しようとする

// Core 
import { NgModule } from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 

// Components 
import { HeaderComponent } from "./header.component"; 
import { ButlerBarComponent } from './butler/butler.component'; 

@NgModule({ 
    declarations: [ 
     HeaderComponent, 
     ButlerBarComponent 
    ], 
    imports: [BrowserModule], 
    providers: [], 
    bootstrap: [ButlerBarComponent] 
}) 

export class HeaderModule { } 

AppModule

import { HeaderModule } from "./header/header.module"; 

を、次にように見えたHeaderModuleを持っていますしかし私がこれを行うとき、app.component.htmlのヘッダーコンポーネントを呼び出す宣言は、headerセレクターにアクセスできなくなりました。

私はapp.component.html<header></header>タグを入れて、アプリケーションの負荷header.moduleとその後のheader.componentを持っているとapp.component.htmlからheaderセレクタを利用可能にすることができますので、この作業をするために行うには何が必要ですか?

+0

'header.module'ファイルの外観を教えてください。 – Swordfish0321

答えて

3

あなたはAppModuleHeaderModuleをインポートするときにそれらにアクセスすることができ、あなたのHeaderModule内のすべてのこれらのコンポーネントを宣言し、そのようにAppModuleをエクスポートする必要があります。また、他のモジュールでは、ngIfngForngClassなどの共通のディレクティブが含まれているので、代わりにCommonModuleをインポートする必要があります。最後に、1つのコンポーネントのみをブートストラップするので、ここではブートストラップは必要ありません。あなたはAppModuleでそれを行います。だから、あなたのHeaderModuleは次のようになります。

import { NgModule } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 

import { HeaderComponent } from "./header.component"; 
import { ButlerBarComponent } from './butler/butler.component'; 

@NgModule({ 
    imports: [ 
     CommonModule 
    ], 
    declarations: [ 
     HeaderComponent, 
     ButlerBarComponent 
    ], 
    exports: [ 
     HeaderComponent, 
     ButlerBarComponent 
    ] 
}) 

export class HeaderModule { } 

を今、あなたは、あなたのAppModuleの輸入にHeaderModuleを追加する必要があり、あなたが行く準備ができなければなりません。

+0

'platform-b​​rowserには、エクスポートされたメンバーCommonModuleはありません。 'というエラーが表示されます。 – StephenRios

+1

@StephenRiosええ、それは '@ angular/common'にあり、' @ angular/platform-b​​rowser'にはありません。私はそれを見落とし、今私のポストを編集しました。 –

関連する問題