ioni c 4 - android кнопка «Назад» не работает для маршрутов на вкладках - PullRequest
0 голосов
/ 06 апреля 2020

Навигация моего приложения в основном:

  1. экран ввода приложения
  2. экран входа в систему
  3. экран панели вкладок с 5 различными вкладками

Итак, после входа пользователя в систему, когда я нажимаю Android Кнопка «Назад», он возвращается на страницу входа в систему.

Я ожидаю go возврата на предыдущую страницу / вкладку.

Похоже, что маршрутизатор не учитывает маршруты внутри страницы вкладок.

Мой app.routes

import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';

import { AppintroGuard } from './guards/appintro.guard';
import { AuthGuard } from './guards/auth.guard';

const routes: Routes = [
  { path: '', loadChildren: './tabs/tabs.module#TabsPageModule', canActivate: [AuthGuard, AppintroGuard] },
  { path: 'appintro', loadChildren: './appintro/appintro.module#AppintroPageModule' },
  { path: 'auth-login', loadChildren: './auth-login/auth-login.module#AuthLoginPageModule' },
];
@NgModule({
  imports: [
    RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
  ],
  exports: [RouterModule]
})
export class AppRoutingModule {}

Мой /pages/tabs/tabs.router.module.ts

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { TabsPage } from './tabs.page';

const routes: Routes = [
  {
    path: 'tabs',
    component: TabsPage,
    children: [
      {
        path: 'tab-monitoring',
        children: [
          {
            path: '',
            loadChildren: '../tab-monitoring/tab-monitoring.module#TabMonitoringPageModule'
          },
          {
            path: 'tab-monitoring-filter',
            children: [
              {
                path: '',
                loadChildren: '../tab-monitoring-filter/tab-monitoring-filter.module#TabMonitoringFilterPageModule'
              }
            ]
          }
        ]
      },
      {
        path: 'tab-attachments',
        children: [
          {
            path: '',
            loadChildren: '../tab-attachments/tab-attachments.module#TabAttachmentsPageModule'
          }
        ]
      },
      {
        path: 'tab-dashboard',
        children: [
          {
            path: '',
            loadChildren: '../tab-dashboard/tab-dashboard.module#TabDashboardPageModule'
          }
        ]
      },
      {
        path: 'tab-progress',
        children: [
          {
            path: '',
            loadChildren: '../tab-progress/tab-progress.module#TabProgressPageModule'
          },
          {
            path: 'readjusts',
            children: [
              {
                path: ':id_painel',
                loadChildren: '../tab-readjusts/tab-readjusts.module#TabReadjustsPageModule'
              }
            ]
          },
          {
            path: 'project',
            children: [
              {
                path: ':id_projeto/:id_painel',
                loadChildren: '../tab-project/tab-project.module#TabProjectPageModule'
              },
              {
                path: ':id_projeto/:id_painel/readjusts',
                loadChildren: '../tab-readjusts-project/tab-readjusts-project.module#TabReadjustsProjectPageModule'
              }
            ]
          }
        ]
      },
      {
        path: 'tab-user',
        children: [
          {
            path: '',
            loadChildren: '../tab-user/tab-user.module#TabUserPageModule'
          }
        ]
      },
      {
        path: '',
        redirectTo: '/tabs/tab-dashboard',
        pathMatch: 'full'
      }
    ]
  },
  {
    path: '',
    redirectTo: '/tabs/tab-dashboard',
    pathMatch: 'full'
  }
];

@NgModule({
  imports: [
    RouterModule.forChild(routes)
  ],
  exports: [RouterModule]
})

export class TabsPageRoutingModule {}

Я делаю что-то не так?

Мой обратный вызов функции входа в систему:

this.authService.login(f.value.usuario, f.value.senha).subscribe(
  data => {
    this.authService.loadInitialData().then(value => {
      this.router.navigateByUrl('/tabs', {replaceUrl:true});
    });
  },
  error => {
    console.log('auth error');
    this.auth_error = true;
    this.is_loading = false;
  },
  () => { }
);

1 Ответ

1 голос
/ 06 апреля 2020

Вы можете попробовать это, чтобы установить страницу как root

this.router.navigateByUrl(/* alternative root page */);

например

this.router.navigateByUrl('tabs/tab-user');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...