我使用的是Ionic3,我有一些特性要求用户通过身份验证,所以当用户单击按钮时,会显示一个警报。由于项目中到处都是功能,所以我创建了一个全局函数来显示此警报,但是当我将push()或setroot()放入其中时,项目停止工作,出现一个空白页。

import { Injectable, ViewChild } from '@angular/core';
//..............

@Injectable()
export class Alerts {
@ViewChild(Nav) nav: Nav;

constructor(private alertCtrl: AlertController) {
}

mustLogin() {
    let alert = this.alertCtrl.create({
        title: 'must login',
        message: 'go to login ?',
        buttons: [
            {
                text: 'Cancel',
                role: 'cancel',
                handler: () => {
                    console.log('Cancel clicked');
                }
            },
            {
                text: 'Login',
                handler: () => {
                   this.nav.setRoot(LoginPage);
                   //this.nav.push(LoginPage); blank page also
                }
            }
        ]
    });
    alert.present();
}

}

最佳答案

你需要遵循下面的代码。
您可以在Navigating from an Overlay Component标题下阅读更多about it here

constructor(private appCtrl: App){}

您需要使用this.appCtrl.getRootNav().setRoot(LoginPage);
而不是这个this.nav.setRoot(LoginPage);

关于angular - 在服务(Ionic 3)中使用push()或setRoot()时为空白页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45805834/

10-13 03:03