ionViewWillEnter 不会被触发 -Ionic 5-Tabs

ionViewWillEnter doesn't get Triggered -Ionic 5-Tabs

我的应用程序中有 3 个选项卡,我想从中重定向到另一个选项卡 page.i。e 当用户单击选项卡时,它将加载我想重定向到页面的列表(比如X).点击X页面的后退按钮后ionViewWillEnter/DidEnter不起作用。谁能帮我找出解决办法?

App Module Routing 页面 :- 加载名为 UW 的单独模块。

const routes: Routes = [
  {
    path: 'uw',
    loadChildren: () => import('src/app/UW/uw.module').then(m => m.UwModule)
  },
]

UW 模块加载仪表板页面:

const routes: Routes = [
  {
    path: 'dashboard-uw',
    loadChildren: () => import('src/app/UW/pages/dashboard-uw/dashboard-uw.module').then(m => m.DashboardUwPageModule)
  },
  {
    path: '',
    redirectTo: 'dashboard-uw',
    pathMatch: 'full'
  },
]

仪表板页面包含选项卡,在每次单击选项卡时加载单独的页面 仪表板路由模块:

const routes: Routes = [
  {
    path: '',
    component: DashboardUwPage,
    children: [
      {
        path: uwconstants.UW_TAB1,
        loadChildren: () => import('src/app/UW/pages/uw-premium/uw-premium.module').then(m => m.UwPremiumPageModule)
      },
      {
        path: uwconstants.UW_TAB2,
        loadChildren: () => import('src/app/UW/pages/uw-invoices/uw-invoices.module').then(m => m.UwInvoicesPageModule)
      },
      {
        path: uwconstants.UW_TAB3,
        loadChildren: () => import('src/app/UW/pages/uw-tat/uw-tat.module').then(m => m.UwTatPageModule)
      },
      {
        path: uwconstants.UW_TAB4,
        loadChildren: () => import('src/app/UW/pages/uw-intermediary/uw-intermediary.module').then(m => m.UwIntermediaryPageModule)
      },
      {
        path: uwconstants.UW_TAB5,
        loadChildren: () => import('src/app/UW/pages/uw-vet-pvet-add-tab/uw-vet-pvet-add-tab.module').then(m => m.UwVetPvetAddTabPageModule)
      },
      {
        path: '',
        redirectTo: uwconstants.UW_TAB1,
        pathMatch: 'full'
      },
    
    ]
  },
  {
    path: '',
    redirectTo: 'uw/dashboard-uw/UW-TAB1',
    pathMatch: 'full'
  },

];

每个选项卡点击加载一个单独的页面,使用这行代码

  public approvePremium(item) {
    this.navctrl.navigateForward([ '/uw/uw-premium-send', { leadCode: item } ])
  }

点击后退按钮,我用的是

 this.navctrl.navigateBack([ 'uw', 'dashboard-uw', 'UW-TAB1' ]);

ionViewWill Enter 后退按钮后不触发click.Some 帮我提前查一下solution.Thanks

通过以下方式更改选项卡路由模块

TabsPageRoutingModule

const routes: Routes = [
      {
        path: 'tabs',
        component: TabsPage,
        children: [
          {
            path: 'tab1',
            children: [ {
              path: '',
              loadChildren: () => import('../tab1/tab1.module').then(m => m.Tab1PageModule),
            },
            {
              path: 'dummy',
              loadChildren: () => import('../sample/sample.module').then(m => m.SamplePageModule)
            } ]
          },
          {
            path: 'tab2',
            loadChildren: () => import('../tab2/tab2.module').then(m => m.Tab2PageModule)
          },
          {
            path: 'tab3',
            loadChildren: () => import('../tab3/tab3.module').then(m => m.Tab3PageModule)
          },
          {
            path: '',
            redirectTo: '/tabs/tab1',
            pathMatch: 'full'
          }
        ]
      },
      {
        path: '',
        redirectTo: '/tabs/tab1',
        pathMatch: 'full'
      }
    ];

这里我们有三个选项卡 tab1,tab2,tab3 并且 dummytab1

的子页面

tabsPage.html

<ion-tabs>
  <ion-tab-bar slot="bottom" **id="myTabs"**>
            ----
            ----
  </ion-tab-bar>
</ion-tabs>

从您的第一个选项卡,您可以导航到子页面导航方法。由于隐藏内页上的选项卡是一个已知问题,因此没有直接的方法来隐藏它。所以使用下面的自定义方法。创建服务class并将其添加为常用方法

服务类

public toggleTabsBar(){
 const tabId = document.getElementById('myTabs');
    if (tabId) {
      if (tabId.style.display === 'none') {
        tabId.style.display = 'flex';
      }else{
        tabId.style.display = 'none'
      }
    }
}

在您的子页面中,虚拟页面通过调用 IonViewDidEnter() 上的 toggleTabsBar() 方法隐藏标签栏

虚拟页面

ionViewDidEnter(): void {
    this.toggleTabsBar();
  }

当您从子页面单击后退按钮导航回父页面以显示选项卡时,将调用 IonViewDidEnter() 方法中的相同方法。