我正在做一个 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>
当我生成不同的页面时,我能够使用相同的方式导航到此页面。
我遇到了同样的问题。我在这里找到了解决方案。您需要向路由数组添加其他路由。
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' },
];
第 1 步:在 app-routing.module.ts 中的选项卡页面添加额外的路由
{ path: 'app', loadChildren: './pages/tabs/tabs.module#TabsPageModule' }
第 2 步:在选项卡路由.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>
我遇到了同样的问题。默认情况下,我的第一个页面是"登录"页面。我想在单击按钮后导航到选项卡模块。
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-routing.module 中添加另一个路径:"app"。
- 使用导航控制器的路由导航到根目录。有关更多详细信息,请参阅此处,我在这里找到了。