2017-03-28 5 views
2

の要素の可視性を聞いて、私は私のWebアプリケーションのためのブートストラップおよび角度2(V4)を使用しています。私は可視性の変更のための指示の要素を聞きたい。私の要素には子を隠すことができる親がhidden-sm-upであり、隠されたり表示されるたびに関数をトリガする必要があります。角度2

div.hidden-sm-up 
    input.form-control(myDirective, type='number') 

と私の指示で:変更の検出が実行されたときに

@Directive({ 
    selector: '[myDirective]' 
}) 

export class myDirective { 
    constructor(private element: ElementRef, private renderer: Renderer){ 

    } 

    ngAfterViewInit(): void{ 
     // listen to visibility change here 
    } 
} 
+0

あなたは部品 –

+0

@BabarBilalのホストプロパティを使用する必要があり、それが非表示または表示され – ncohen

+0

どのように...あなたの答えを開発してください?要素が不可視になると、ブラウザはイベントを提供しません。したがって、Angularは要素を提供しません。 –

答えて

3

ngDoCheckが実行され、あなたがそれを監視するだけではなくコンポーネントの作成に一度それを取得したい場合は、それゆえ私はそれが正しい場所だと思います時間:

@HostListener('window:resize') 
ngDoCheck() { 
    this.isVisible = this.element.nativeElement.offsetParent !== null; 
} 

ありどこかに放出され、いくつかのイベントのように、より良い選択肢かもしれませんが、一般的なケースのためにngDoCheckは正常に動作する必要があります。

+0

ブラウザのサイズが変更されたとき、残念ながら 'ngDoCheck'がトリガされていません... – ncohen

+0

あなたは' @HostBinding(「ウィンドウ:サイズを変更」)を追加することができます '')( 'ngDoCheck前に、それが行います。 –

+0

HostBindingの使い方がわかりません...括弧の中に 'ngDoCheck'を入れてください。 – ncohen