2016-07-23 68 views
0

我有一個頁面,我通過撥打:關閉模態頁

let profileModal = Modal.create(PopupPage); 
this.nav.present(profileModal); 

如何從我的PopupPage組分關閉此模式頁:

import { ElementRef } from '@angular/core'; 
import { Page } from 'ionic-angular'; 

@Page({ 
    template: ` 
<ion-pane padding="" scroll="false"> 
    <h2>Login with...</h2> 
    <p>Please select one of our social logins. We'll never post anything your name 
    <button class="button button-default button-full button-danger" style="background-color: #3b5998;"><i class="fa fa-facebook" aria-hidden="true"></i> Facebook</button> 
    <button class="button button-default button-full button-danger" style="background-color: #db3236;"><i class="fa fa-google" aria-hidden="true"></i> Google</button> 
</ion-pane>`, 
    host: { 
     "(document: click)": "globalClicked($event)" 
    } 
}) 
export class PopupPage { 

    constructor(private elmRef: ElementRef) {} 

    globalClicked(event) { 
    if(!this.eventTriggeredInsideHost(event)) alert('NOW'); 
    } 

    eventTriggeredInsideHost(event) { 
    var current = event.target; 
    var host = this.elmRef.nativeElement.getElementsByTagName('ion-pane')[0]; 

    do { 
     if (current === host) { 
     return (true); 
     } 
     current = current.parentNode; 
    } while (current); 

    return (false); 
    } 
} 
+1

這是什麼問題? –

+0

如何關閉它? – rakete

回答

3

爲了關閉彈出窗口,則應在constructor中添加ViewController類的實例,然後使用dismiss()方法。

import { ..., ViewController } from 'ionic-angular'; 

@Component(...) 
class PopupPage { 

constructor(/* ..., */ viewCtrl: ViewController) { } 

dismiss() { 
    // You can send information back to the previous page if you need to 
    let data = { 'foo': 'bar' }; 
    this.viewCtrl.dismiss(data); 
} 

} 
+0

謝謝!適用於我。如果彈出窗口在此時打開,您是否知道如何檢查? – rakete

+0

你什麼時候在_at這個時候?無論如何,你可以嘗試'console.log(this.viewCtrl)'看看裏面有什麼,也許有什麼可以幫助你檢查... – sebaferreras

+0

通過「(document:click)」:「globalClicked($ event)」I捕獲所有點擊事件。如果點擊在模態框外,模態框應該消失。當然這是點擊按鈕打開模式框時事件已經被觸發。所以盒子應該打開並直接消失。 – rakete

-2

使用navPop在您的按鈕來關閉這樣的模式:

<ion-buttons start navPop> 
    <button> 
     <ion-icon `enter code here`></ion-icon> 
    </button> 
</ion-buttons>