2017-09-28 1 views
1

I持って自分のアプリケーションで以下の成分:カスタマイズ成分

  1. NavbarComponent
  2. HomeComponent
  3. ClassroomComponent Iの両方でNavbarComponentを使用

HomeComponentとClassroomComponentはこのようになります:

// home.component.html 

<app-navbar></app-navbar> 
..something related to HomeComponent 

// classroom.component.html 

<app-navbar></app-navbar> 
..something related to ClassroomComponent 

使用場所によってはnavbarをカスタマイズする必要があります。たとえば、HomeComponentで使用されている場合は赤色にし、そうでない場合は緑色に設定します。 これを行う方法はありますか?

+0

自分で試したことはありませんが、ルータを使用する必要があると思います。 –

+0

ええ、まさにあなたが望むものではありませんが、これに基づいて何かをコードすることができます:https://toddmotto.com/dynamic-page-titles-angular-2-router-events –

答えて

0

あなたがイベント(出版社/加入者の方法論)を使用することによりグローバル値

  • にアクセスするためのプロバイダ(インジェクション)を使用することにより、さまざまな方法

    1. であなたのコンポーネントを変更することができます手順http://learnangular2.com/events/
    2. あなたは定義することができます@ NavbarComponentで入力デコレータhttps://github.com/ionic-team/ionic/issues/5741またはhttp://www.concretepage.com/angular-2/angular-2-custom-event-binding-eventemitter-example
  • 1

    あなたはを使用しようとすることができます10セレクタを使用して、祖先に基づいてコンポーネントスタイルを定義します。

    それは次のように作業する必要があり、あなたの例:特別なCSSセレクタに関する

    // inside app-navbar css file 
    // where 'home-component' is the selector of your HomeComponent 
    :host-context(home-component) { 
        background: red; // NavbarComponent is red when inside HomeComponent; 
    } 
    
    :host-context(classroom-component) { 
        background: blue; // NavbarComponent is blue when inside ClassroomComponent; 
    } 
    

    詳細はhere見つけることができます。

    +0

    ありがとう、それは助けてくれました! もう1つ質問があります。私の場合、navbarは複雑な構造を持ち、異なるクラスを使います。 navbar自体だけでなく、その子クラスにも影響を与える方法はありますか? このようなもの: ':ホストコンテンツ(ホームコンポーネント){ 背景:赤; .topnav a { text-align:center; } ' – vitdev

    +0

    ':host-context(my-selector).child-class {...} 'のような子をターゲットにすることができます。子コンポーネント内で子を対象にしたい場合は、 ':: ng-deep'セレクタを参照する必要があります。 – cyrix

    +0

    大変お世話になりました! – vitdev

    関連する問題