【问题标题】:ionic2: can't navigate to another page from popoverionic2:无法从弹出框导航到另一个页面
【发布时间】:2018-01-30 09:36:15
【问题描述】:

我正在使用 Ionic2,当用户从弹出窗口中选择要打开的页面时,我想打开另一个页面,这是第一页中的代码:

popvarSpecialsArr = ['Home','My Account','Cart','Wishlist','My Orders'];
presentPopoverSpecial(myEvent) {
let popover = this.popoverCtrl.create(MorePopverPage, {popvarArr: this.popvarSpecialsArr});
console.log('my event', myEvent);
popover.present({
  ev: myEvent
});

}

这是弹出页面的代码:

popvarArr;

constructor(public navCtrl: NavController, public navParams: 
NavParams,public viewCtrl: ViewController) {
this.popvarArr = this.navParams.get('popvarArr');
console.log(this.navParams.get('popvarArr'));
}

openPage(page) {
console.log(page);
if(page == 'Home') {
  console.log('inside home');
  this.navCtrl.setRoot(HomePage);
} else if(page == 'My Account') {
  this.navCtrl.setRoot(MyAccountPage);
} else if(page == 'Cart') {
  this.navCtrl.setRoot(CartPage);
} else if(page == 'Wishlist') {
  this.navCtrl.setRoot(WishlistPage);
} else if(page == 'My Orders') {
  this.navCtrl.setRoot(MyOrdersPage);
} else if(page == 'Specials') {
  this.navCtrl.setRoot(SpecialsPage);
}
}

这是弹出的 Html 代码

<ion-content no-padding no-margin>
<ion-list no-lines no-padding no-margin>
    <button ion-item *ngFor="let popvar of popvarArr" (click)="openPage(popvar)">{{popvar}}</button>
    <!-- <button ion-item (click)="close()">Home</button>
    <button ion-item (click)="close()">My Account</button>
    <button ion-item (click)="close()">Cart</button>
    <button ion-item (click)="close()">Wishlist</button>
    <button ion-item (click)="close()">My Orders</button> -->
</ion-list>

但是当我从弹出窗口中选择一个页面时,它不会显示我想要的页面并且仍然在同一页面中,我应该怎么做才能从弹出窗口中显示其他页面

【问题讨论】:

  • 你是从 MorePopverPage 调用函数 openPage(page) 吗?
  • @RafałGołubowicz 是的,我编辑了帖子并输入了 html 代码
  • @RafałGołubowicz 是的,我编辑了帖子并输入了 html 代码

标签: angular typescript ionic2 ionic3


【解决方案1】:

(getRootNav) 已弃用,将在下一个主要版本中删除 发布。请改用 getRootNavById。

你应该使用:

 this.appCtrl.getRootNavs()[0].setRoot('LoginPage');

代替getRootNavById() 方法。

【讨论】:

    【解决方案2】:

    就像您在 the docs 中看到的那样:

    如果您想从覆盖组件(弹出框、 模态,警报等)?在这个例子中,我们在我们的 应用程序。从弹出窗口中,我们将获得根的引用 NavController 在我们的应用中,使用 getRootNav() 方法。

    import { Component } from '@angular/core';
    import { App, ViewController } from 'ionic-angular';
    
    @Component({
        template: `
        <ion-content>
          <h1>My PopoverPage</h1>
          <button ion-button (click)="pushPage()">Call pushPage</button>
         </ion-content>
        `
      })
      class PopoverPage {
        constructor(
          public viewCtrl: ViewController
          public appCtrl: App
        ) {}
    
        pushPage() {
          this.viewCtrl.dismiss();
          this.appCtrl.getRootNav().push(SecondPage);
        }
      }
    

    所以在你的情况下,它看起来像这样:

    import { App, ViewController } from 'ionic-angular';
    
    // ...
    
     constructor(public viewCtrl: ViewController, public appCtrl: App) {}
    
    // ...
    
    openPage(page) {
        console.log(page);
    
        // Close the popover
        this.viewCtrl.dismiss();
    
        if(page == 'Home') {
            console.log('inside home');
            this.appCtrl.getRootNav().setRoot(HomePage);
        } else if(page == 'My Account') {
            this.appCtrl.getRootNav().setRoot(MyAccountPage);
        } else if(page == 'Cart') {
            this.appCtrl.getRootNav().setRoot(CartPage);
        } else if(page == 'Wishlist') {
            this.appCtrl.getRootNav().setRoot(WishlistPage);
        } else if(page == 'My Orders') {
            this.appCtrl.getRootNav().setRoot(MyOrdersPage);
        } else if(page == 'Specials') {
            this.appCtrl.getRootNav().setRoot(SpecialsPage);
        }
    }
    

    【讨论】:

    • 很高兴听到这个消息:)
    猜你喜欢
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 2012-09-18
    • 2020-07-27
    • 1970-01-01
    相关资源
    最近更新 更多