2017-03-11 16 views
2

角度2 - 別のルートへの切り替え/別のページ(初心者レベル)

が解決する場合、ヘッダーを変更する方法

私はいくつかのコンポーネントがあります。 - 家庭用コンポーネント、デフォルトのヘッダー、詳細コンポーネント、詳細ヘッダーコンポーネント
を両方のヘッダ異なるレイアウト

レッツは、それが「ディテールヘッダー」

が表示されますので、私のロジックがで他の場合には、いくつかの を行うことです詳細ページで
すると、ユーザー、それはデフォルトのヘッダー」を表示し、[ホーム]ページで言っていますapp.component.ts 残念ながら、期待どおりに表示されません。
Angular2での操作方法は?ヘッダーを切り替えるのに問題があります。

これは私のapp.component.tsある

@Component({ 
    selector: 'app-root', 
    encapsulation: ViewEncapsulation.None, 
    styleUrls: ['./main.css'], 
    template: ` 
    <div class="main-body"> 
     <app-header *ngIf="!showHeaderB()"></app-header> 
     <detail-header *ngIf="showHeaderB()"></detail-header> 
     <div class="container"> 
     <small><api-error></api-error></small></div> 
     <router-outlet></router-outlet> 
     </div> 
     <app-footer></app-footer> 
     <template ngbModalContainer></template> 
    </div> 
    ` 
}) 

export class AppComponent { 
    showHeaderB(){ 
    if (this.router.url.startsWith('/detail/')) { 
     return true; 
    } else { 
     return false; 
    } 
    } 
} 
+0

たぶん、これがそうhttp://stackoverflow.com/questions/40331382/change-a-html-element-in-app-component-dynamically –

+0

あなたを助けるかもしれない、あなたが投稿したコードに問題は何ですか。あなたは何をしていますか、何が起こると思いますか?代わりに何が起こりますか? –

+0

ご迷惑をおかけして申し訳ございません。 最初に、別のページにいくつかのヘッダーがあります。 ホームページ「ヘッダーA」 詳細ページ使用「ヘッダーB」 ホームページにいるユーザーが「ヘッダーA」を表示する ユーザーが「ヘッダーB」を表示すると、 私はapp.component.tsでいくつかのロジックを実行しようと思っていて、まだそれに固執しています。 私がやったやり方が間違っているか間違っているのか、それが期待どおりに表示されないのか分かりません。 – weikian

答えて

1

は、別の成分として、ページのヘッダーを持っています。

@Component({ 
    selector: 'page-header', 
    template: ` 
    <div> {{title}}</div> 
    `, 
}) 
export class PageHeader { 

    @Input() title:string=""; 

} 

各コンポーネントには、そのコンポーネントを含めてタイトルを割り当てる必要があります。

@Component({ 
    selector: 'component-1', 
    template: ` 
    <div> 
     <page-header title="pageTitle"> </page-header> 
     ... 
    </div> 
    `, 
}) 

export class Component1 { 

pageTitle:string; 

} 

@Component({ 
    selector: 'component-2', 
    template: ` 
    <div> 
     <page-header title="pageTitle"> </page-header> 
     ... 
    </div> 
    `, 
}) 

export class Component2 { 

pageTitle:string; 

} 
+0

答えをいただきありがとうございます。本当にありがとうございます。質問は「ページタイトル」を変更することではありません。別のページにルーティングするとき、ヘッダーのレイアウトが異なるため、別のヘッダーを表示することになります。 :) – weikian

+0

あなたは探しています**どのコンポーネントのヘッダーを変更しない**といつですか? – Aravind

+0

たとえば、**ホームページ**は**デフォルトヘッダー**を表示します。**詳細ページ**のユーザーは、**詳細ヘッダー**を表示します。残りのページに** Default Header ** – weikian

関連する問題