angular - 如何在 ionic 中更改选项卡时弹出所有选项卡堆栈?

标签 angular typescript ionic-framework tabs ionic3

我当前的选项卡代码将所有页面一对一地堆叠为单独的选项卡。因此,当我更改选项卡时,它会显示以前堆叠的页面,我想在更改选项卡时将所有选项卡设置为根。这是我当前的代码

export class TabsPage {

  tab1Root = HomePage;
  tab2Root = SearchPage;
  tab3Root = QueuesPage;
  tab4Root = FavoritesPage;
  tab5Root = SettingsPage;

  constructor() {

  }
}
<ion-tabs>
  <ion-tab [root]="tab1Root" tabTitle="Home" tabIcon="home"></ion-tab>
  <ion-tab [root]="tab2Root" tabTitle="Search" tabIcon="search"></ion-tab>
  <ion-tab [root]="tab3Root" tabTitle="Queues" tabIcon="people"></ion-tab>
  <ion-tab [root]="tab4Root" tabTitle="Favorites" tabIcon="star"></ion-tab>
  <ion-tab [root]="tab5Root" tabTitle="Settings" tabIcon="cog"></ion-tab>
</ion-tabs>

最佳答案

我能够通过获取选项卡组件的引用,然后通过从上一个选项卡访问 NavController 来调用 popToRoot( )方法:

<!-- #myTabs allow us to get a reference of the tabs -->
<!-- (ionChange) allow us to run our method every time the selected tab is changed -->
<ion-tabs #myTabs (ionChange)="onTabsChange()">
  <ion-tab [root]="tab1Root" tabTitle="Home" tabIcon="home"></ion-tab>
  <ion-tab [root]="tab2Root" tabTitle="About" tabIcon="information-circle"></ion-tab>
  <ion-tab [root]="tab3Root" tabTitle="Contact" tabIcon="contacts"></ion-tab>
</ion-tabs>

然后:

// Angular
import { Component, ViewChild } from '@angular/core';

// Pages
import { AboutPage } from '../about/about';
import { ContactPage } from '../contact/contact';
import { HomePage } from '../home/home';

// Tabs
import { Tabs } from 'ionic-angular';

@Component({
  templateUrl: 'tabs.html'
})
export class TabsPage {

  @ViewChild('myTabs') tabRef: Tabs;

  tab1Root = HomePage;
  tab2Root = AboutPage;
  tab3Root = ContactPage;

  onTabsChange() {
    // Get the previous tab if any
    const previousTab = this.tabRef.previousTab(false);

    if(previousTab) {
      try {
        // Get the navCtrl and pop to the root page
        previousTab.getViews()[0].getNav().popToRoot();
      } catch(exception) {
        // Oops...
        console.error(exception);
      }
    }
  }
}

Stackblitz Project

enter image description here

关于angular - 如何在 ionic 中更改选项卡时弹出所有选项卡堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52690855/

相关文章:

angular - 以 Angular typescript 将数据导出到csv文件

javascript - react Hook useEffect 在按钮单击时获取数据( typescript )

reactjs - 检查 typescript 中的 never[]

Angular mat-select value 2 way 使用对象进行数据绑定(bind)

javascript - Angular 6 +从文档中获取具有类名的元素并更改样式

angular - 如何让 "Observable.of([]);"工作?

ios - 如何设置默认设备以在 Ionic 中进行模拟?

Typescript 依赖注入(inject)框架

html - 如何使用 *ngFor 进行 ionic 项滑动?

html - 如何正确地将自定义字体包含到 ionic 项目中?