2017-09-29 8 views

答えて

1

ディレクティブは問題の解決方法になります。

のsrc /アプリ/ width.directive.ts

import { Directive, ElementRef, Input } from '@angular/core'; 

@Directive({ selector: '[width]' }) 
export class widthDirective { 

    @Input() 
    set width(width: number) { 
     this.el.nativeElement.style.width = `${this._width}px`; 
    } 

    constructor(el: ElementRef) {} 
} 

次に任意のコンポーネントで使用できる:あなたはどこでもあなたのディレクティブがアクセスできるようにしたい場合

<div class="page home-page" width [width]="500"> 

あなたはthis answerに従うことができます。

+0

どうすればいいですか? calc(100%〜200px)? – Joseph

+0

あなたは 'WidthDirective'の中で' calc'関数を動かし、 '@Input()のようにすることができます。 幅(幅:数値)を設定します{ this.el.nativeElement.style.width = \' $ {this.calc (100%幅)} px \ '; } 'それは' calc() '戻り値に依存します、私に関数を表示できますか? – Lilrom

1

角度2/4で(メイングローバルスタイルシートを除く)すべてのスタイルが封入されているので、あなたは、このようなスタイルシートを含めているとき:component.cssから

@Component({ 
    selector: 'component-name', 
    templateUrl: './component.html', 
    styleUrls: ['./component.css'] 
}) 

すべてのスタイルは、(もしcomponent.htmlのみに適用されますあなたは/deep/と同じものを使用しません)。現在のレイアウトの幅を自由に変更しても、他のレイアウトには影響しません!

+0

しかし、私のdivクラス= "ページホームページ"は他のコンポーネントにあります。ログインコンポーネントのdivクラス= "ページホームページ"を呼び出して、幅をあなたが望むものに設定するにはどうすればいいですか? – Joseph

+0

@Joseph、それが別のコンポーネントにある場合、現在の 'component.css'ファイルからそのコンポーネントにアクセスすることはできません。グローバルスタイルは 'styles.css'ファイル(プロジェクトのルートの近く)に書くことができます。 –

+0

@Commerical Suicide。はい、styles.cssにdiv class = "page home-page"デザインを適用しました。その幅をlogin.component上でのみ変更したいと思います。 login.componentのみで、他のコンポーネントは – Joseph

関連する問題