2017-09-12 4 views
0

モーダルウィンドウをモーダルウィンドウで開いているときに、モーダルウィンドウを開いてそのモーダルウィンドウ(影付きの背景)の外側をクリックすると、常にそのdiv要素のクラスが間違っています。複数のdivをクリックして1つのクラス(Angular2)のみを表示していますか?

例:私は、モーダルをクリックして、モーダルクラスは、私は影の背景をクリックするとモーダルクラスは、なぜ、再び表示され、OKである表示されますか?代わりに別のクラスが表示されます。ここで

コード(typescriptファイル)である:ここでは

@ViewChild('ova') ova; //accessing the div via refference tag in html 
@HostListener('document:click') onClick($event){ 
    if (this.show) 
    console.log("display event: "+ this.ova.nativeElement.className) 

は、対応の.htmlファイルです。

<div class="modalall"> 
     <div *ngIf="closeIt" (click)="close()"n class="modalclose">x</div> 
     <div #ova class="modal"> 
     some text 
     </div> 
</div> 
+0

なぜあなたはクラスをしたいですか?私はあなたがモーダルを開くと、モーダルを含むdivがあると思います。あなたがクリックすると、両方の時間にそのdivが得られます。 おそらく、あなたは間違ったクラスを初めて取得し、2回目ではない –

+0

あなたのモーダルは何ですか? – Wandrille

+1

@ Wandrilleの要求を完了するために、働くplunkrを作ることができますか?私の推測では、あなたのZ-インデックスはあなたのクリックを台無しにしています。 – trichetriche

答えて

1

(ディレクティブで良い)、これを試してみてください:

@HostListener('document:click', ['$event', '$event.target']) 
    onClick(event: MouseEvent, targetElement: HTMLElement): void { 
     if (!targetElement) { 
      return; 
     } 

     const clickedInside = this.elementRef.nativeElement.contains(targetElement); 
     if (!clickedInside) { 
      this.clickOutside.emit(event); 
     } 
    } 
関連する問題