2017-01-03 18 views
2

親コンポーネントに文字列(css-class)を追加するにはどうすればよいですか? 異なるページでは、クラスをコンテナ要素に追加できるはずです。角2親に文字列(css-class)を追加するコンポーネント

app.component.ts:

@Component({ 
    selector: 'app-root', 
    template: ` 
     <div class="container {{ ADD HERE }}"> 
      <router-outlet></router-outlet> 
     </div> 
    ` 
}) 
export class AppComponent { 
    title = 'app works!'; 
} 

page1.component.ts:

@Component({ 
    template: ` 
     <p>I'm page 1!</p> 
    ` 
}) 
export class Page1Component { 
     containerClasses = "page-1"; 
} 

答えて

4
@Component({ 
    template: ` 
     <p>I'm page 1!</p> 
    ` 
}) 
export class APageComponent { 
    constructor(private elRef:ElementRef) { 
    } 

    containerClasses = "page-1"; 

    ngAfterViewInit() { 
    this.elRef.nativeElement.parentElement.classList.add(this.containerClasses); 
    } 
} 
+0

良いですね!サービスはどうですか? – Mick

+0

「ヘッダーを表示する」のような情報を共有したいこともあります。子コンポーネントから親コンポーネントへまた、要素がnativeElement.parentElementでアクセスするdomの親である必要はありません – Mick

+0

確かに、コンポーネント通信https://angular.io/docs/ts/latest/cookbook/component-communicationには常に共有サービスを使用できます。 html#!#双方向サービス –

関連する問題