2016-11-10 5 views
11

Ionic 2に手動でポップオーバーを配置するにはどうすればよいですか?Ionic 2にポップオーバーを配置する方法

ポップオーバーコントローラが位置をインラインスタイルで設定するため、cssクラスの位置を設定できません。

答えて

24

コードを見ると、ポップオーバーの位置にはオプションがないようです。ただし、ユーザーが何かをタップした結果としてポップオーバーを開くと、clickイベントによって配置されます。我々としても、手動位置決めのためのその知識を使用することができます。

let pop = this.popoverCtrl.create(MyPopover); 

let ev = { 
    target : { 
    getBoundingClientRect :() => { 
     return { 
     top: '100' 
     }; 
    } 
    } 
}; 

pop.present({ev}); 

いくつかのことに注意すること:

  • あなたはtopleft、またはその両方の値を設定することができます。
  • 値はピクセル数で指定する必要があります。
  • topまたはleftが指定されていない場合、通常の測位アルゴリズムがその値に使用されます。

もっと良い方法があるかどうかは分かりましたが、これまでのところこれが私が思いつく最高のものです。

+0

は魅力的に働いた!ありがとう:-) –

+0

優れています。 OpenLayersマップにポップオーバーを配置する必要があり、このソリューションはうまくいきました。しかし、私はオーバーレイを取り除くことができなかったので、最終的に別のアプローチを使用しなければなりませんでした。ところで、このソリューションはどうやって来ましたか?それは文書化されていますか? – daudihus

2

しかし、上記のコードは一部の人には役立ちますが、popoverでcssClassを渡すより良いソリューションが見つかりました。以下に示すように

のCssClassを使用するには、あなたはapp.scssでグローバルに宣言する必要があります:あなた.TSファイルで

.custom-popover .popover-content { 
 
    width: 80%; 
 
    top: 70px; 
 
    left: 30px; 
 
    bottom: 70px 
 
}

を、あなたは以下のようなクラスを渡すことができます:

let popover = this.popoverCtrl.create(PopoverPage, {}, {cssClass: 'custom-popover'}); 
 

 
popover.present();

+0

'.custome-popover'クラスにタイプミスがあります。 – alex351

+0

ありがとう@ alex351、私はそれを変更しました。 – Mnemo

関連する問題