2017-08-04 1 views
2

私は、アプリケーションのすべてのページのヘッダー要素内で使用されるコンポーネントHeroLogoComponentを持っています。私は、これはセレクタ<hero-logo>は、他のすべてのPageComponentで使用できるようにする必要があることを理解し、angular.ioのマニュアルを読んでから私はアプリケーションのすべてのページで使用される1つのコンポーネントを持っています。どのようにグローバルに使用できるように宣言しますか?

@NgModule({ 
    declarations: [ 
    MyApp, 
    HeroLogoComponent, 
], ... 

:次のようにapp.moduleに宣言されています。私は他のページに追加したときに、私はschemas: [CUSTOM_ELEMENTS_SCHEMA]アプリケーションの負荷を含めるようにPageComponentModuleを変更するが、コンポーネントのみ空

<hero-logo><hero-logo> 
としてHTMLで表示されている場合しかし、私は

Error: Uncaught (in promise): Error: Template parse errors: 'logo' is not a known element

エラーが出ます

内部にはテンプレート要素がありません。私はむしろ宣言したい/このコンポーネントを一度、すべての単一のPageComponentModuleでよりもアプリケーション全体で使用するようにします。グローバルに参照できるようにこれを行う方法はありますか?

ありがとうございます!

EDIT:それは、イオン生成されたプロジェクトであるため、

だからapp.module.tsに、ブートストラップがIonicAppです。

bootstrap: [IonicApp], 

ブートストラップで宣言されているコンポーネントは、グローバルに使用できますか。もしそうなら、私はIonicAppからどのように宣言しますか?

+0

は 'home'コンポーネント – Aravind

+0

でそれを宣言し、私はHomePageModule宣言でコンポーネント自体を宣言するか、そのモジュールのインポートとしてモジュールを宣言するべきでしょうか? –

答えて

4

共有モジュールに

@NgModule({ 
    declarations: [ 
    MyApp, 
    HeroLogoComponent, 
    ], 
    exports: [ 
     HeroLogoComponent, 
    ] 

それを持っています。あなたが複数の角度のモジュールがあり、あらゆる角度モジュール内のすべてのコンポーネントにそれがアクセスしたい場合Aravindが推奨されているよう

@NgModule({ 
    declarations: [ 
    MyApp, 
    HeroLogoComponent, 
], ... 

は、共有モジュールにそれを置きます。次に、共有モジュールが必要なコンポーネントを持つ定義したすべてのAngularモジュールにインポートされていることを確認します。

詳細な情報を検索するには、このチェックアウト:https://www.youtube.com/watch?v=ntJ-P-Cvo7o&t=6s

+1

ありがとう! YouTubeのビデオは、この問題と、ngModuleが相互にやりとりする方法を理解するのを助けました。あなたがこの質問に遭遇した場合、+ +は間違いなくそれをチェックします、それはあなたに時間のトンを節約します! –

1

は、以下のコード、同じ宣言アレイ内で宣言されているすべてのコンポーネントが利用できるHeroLogoComponent意志でインポートします異なるモジュール間SharedModule

+0

私はそれを宣言し、HeroLogoComponentModuleからエクスポートしました。それをページで利用できる唯一の方法は、そのページの@NgModuleにそれをインポートすることです。 –

関連する問題