2017-08-10 16 views
0

は私がangular4でポップアップモーダルため、このチュートリアルの後:私はモーダルの外側をクリックした場合ユーザーがポップアップを外側にクリックするとAngular4のポップアップが閉じられますか?

http://jasonwatmore.com/post/2017/01/24/angular-2-custom-modal-window-dialog-box

を、モーダルが消えます。しかし、ユーザーが閉じるアイコンをクリックするまで、モーダルが消えることは望ましくありません。ここで

はモーダルのOnInitである:ここで

ngOnInit(): void { 
     let modal = this; 

     // ensure id attribute exists 
     if (!this.id) { 
      console.error('modal must have an id'); 
      return; 
     } 

     // move element to bottom of page (just before </body>) so it can be displayed above everything else 
     this.element.appendTo('body'); 

     // close modal on background click 
     this.element.on('click', function (e: any) { 
      var target = $(e.target); 
      if (!target.closest('.modal-body').length) { 
       modal.close(); 
      } 
     }); 

     // add self (this modal instance) to the modal service so it's accessible from controllers 
     this.modalService.add(this); 
    } 

は、私が実際に持っているもののplunkerです: https://plnkr.co/edit/gPCTvV?p=preview

+2

:私は角に新しいです/ – Supamiu

+0

Supamiuをなぜかjquyを角度の内側で使用するのは良い習慣ではないと私に教えてください。 – Rahiman

+0

JQueryは角度が何をしているのか、より良い方法で行うのかを判断するためです。 – Supamiu

答えて

0

だけPlunker LINK

更新 app/_directives/modal.component.ts

// close modal on background click 
    this.element.on('click', function (e: any) { 
     var target = $(e.target); 
     if (!target.closest('.modal-body').length) { 
      modal.close(); 
     } 
    }); 

からこれを削除します

更新

あなたは物質的な対話を利用したり、ブートストラップモーダルを利用することができます。

材料対話ライブの場合は、この動作を確認してlinkと連絡先をクリックしてください。

また、あなたは、あなたがこのplunkerをチェックアウト外クリックしたときに、モーダルが閉じられたくないあなたのためにこのangular materail link

を確認することができます。それはデモ働いたこのanswer

は、ブートストラップモーダルチェックを使用するにはあまりにも良い練習は、私はこのチュートリアルではお勧めしませんされていないようなことのために、角の内側にはJQueryを使用して

+0

ありがとう、本当に時間を節約します – Rahiman

+0

jqueryを使用しないと、より良い解決策がありますか? – Rahiman

+0

いいえ、私は材料を使用したくない、私はbootstrap3 + angular4 – Rahiman

関連する問題