Ionic 4 перейти к вкладкам - PullRequest
       7

Ionic 4 перейти к вкладкам

0 голосов
/ 01 октября 2018

Я работаю над проектом Ionic 4, сгенерировал проект с вкладками.

Я хочу создать страницу входа, которая является страницей по умолчанию.

Когдапользователь успешно вошел в систему. Я хочу перейти на вкладки.

Когда я пытаюсь это сделать, я получаю сообщение об ошибке:

Error: Cannot match any routes. URL Segment: 'tabs'

Это мои маршруты:

const routes: Routes = [
  { path: '', loadChildren: './login/login.module#LoginPageModule' },
  { path: 'Login', loadChildren: './login/login.module#LoginPageModule' },
  { path: 'tabs', loadChildren: './tabs/tabs.module#TabsPageModule' },
];

На моей странице входа у меня есть следующая кнопка:

<ion-button expand="block" [href]="'tabs'" color="light" fill="outline">Sign in</ion-button>

Когда я создаю другую страницу, я могу перейти на эту страницу тем же способом.

Ответы [ 3 ]

0 голосов
/ 20 декабря 2018

Шаг 1: Добавьте дополнительный маршрут к странице вкладок в вашем app-routing.module.ts

{ path: 'app', loadChildren: './pages/tabs/tabs.module#TabsPageModule' }

Шаг 2: Добавьте маршрут вкладок внутри tabs-routing.module.ts

 const routes: Routes =[
   {
     path:'tabs',
     component:TabsPage,
     children:[
       {
         path : 'home',
         outlet : 'home',
         component : HomePage
       },
       {
         path : 'me',
         outlet : 'me',
         component : MePage
       }
     ]
   }
 ];

Шаг 3. Ссылка на страницу вкладок

 <ion-button href="app/tabs/(home:home)" routerDirection='root'>Tabs</ion-button>
0 голосов
/ 17 апреля 2019

Я столкнулся с той же проблемой.Моя первая страница - это страница входа в систему по умолчанию.Я хотел перейти к модулю вкладок после нажатия кнопки.

app-routing.module.ts:

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

const routes: Routes = [
   { path: 'app', loadChildren: './tabs/tabs.module#TabsPageModule' },
   { path: '', loadChildren: './sign-in/sign-in.module#SignInPageModule' },
  { path: 'search', loadChildren: './search/search.module#SearchPageModule' }
];
@NgModule({
  imports: [
    RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
  ],
  exports: [RouterModule]
})
export class AppRoutingModule {}

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: 'home',
        children: [
          {
            path: '',
            loadChildren: '../home/home.module#HomePageModule'
          }
        ]
      },
      {
        path: 'my-requests',
        children: [
          {
            path: '',
            loadChildren: '../my-requests/my-requests.module#MyRequestPageModule'
          }
        ]
      },
      {
        path: 'add-request',
        children: [
          {
            path: '',
            loadChildren: '../add-request/add-request.module#AddRequestPageModule'
          }
        ]
      },
      {
        path: 'search',
        children: [
          {
            path: '',
            loadChildren: '../search/search.module#SearchPageModule'
          }
        ]
      },
      {
        path: 'profile',
        children: [
          {
            path: '',
            loadChildren: '../profile/profile.module#ProfilePageModule'
          }
        ]
      },
      {
        path: '',
        redirectTo: '/tabs/home',
        pathMatch: 'full'
      }
    ]
  },
  {
    path: '',
    redirectTo: '/tabs/home',
    pathMatch: 'full'
  }
];

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

sign-in.module.ts:

....

const routes: Routes = [
  {
    path: "",
    component: SignInPage
  }
];

@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    IonicModule,
    RouterModule.forChild(routes)
  ],
  declarations: [SignInPage]
})

....

sign-in.page.html:

 <ion-button (click)="navigateToProfile()">Sign In</ion-button>

sign-in.page.ts:

navigateToProfile(){
  this.navController.navigateRoot(`app/tabs/home`);
  }

В целом, мое решение было:

  • добавив еще один путь: 'app' в моем корневом модуле app-routing.module
  • навигация к корню с маршрутом с помощью NavController.См. здесь для более подробной информации, я нашел это здесь.
0 голосов
/ 03 декабря 2018

Я столкнулся с той же проблемой.Я нашел решение здесь .Вам необходимо добавить дополнительный маршрут к вашему массиву маршрутов.

const routes: Routes = [
  { path: '', loadChildren: './login/login.module#LoginPageModule' },
  { path: 'Login', loadChildren: './login/login.module#LoginPageModule' },
  { path: 'tabs', loadChildren: './tabs/tabs.module#TabsPageModule' },
  { path: '', loadChildren: './tabs/tabs.module#TabsPageModule' },
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...