我正在Ionic 4 App中工作,我添加了tabs主题,我希望其中一个tabs可以作为2个路由工作,例如当用户未登录时,登录页面将打开,而用户在登录时页面将会打开。
这是我的 tabs.router.module.ts :
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { TabsPage } from './tabs.page';
import { AuthenticationGuard } from '../guards/authentication.guard';
const routes: Routes = [
{
path: 'tabs',
component: TabsPage,
children: [
{
path: 'tab1',
children: [
{
path: '',
loadChildren: '../tab1/tab1.module#Tab1PageModule'
}
]
},
{
path: 'tab2',
canActivate: [AuthenticationGuard],
children: [
{
path: '',
loadChildren: '../tab2/tab2.module#Tab2PageModule'
}
]
},
{
path: 'tab2/:id',
canActivate: [AuthenticationGuard],
children: [
{
path: '',
loadChildren: '../tab2/tab2.module#Tab2PageModule'
}
]
},
{
path: 'acceptchallenge',
children: [
{
path: '',
loadChildren: '../acceptchallenge/acceptchallenge.module#AcceptchallengePageModule'
}
]
},
{
path: 'tab3',
children: [
{
path: '',
loadChildren: '../tab3/tab3.module#Tab3PageModule'
},
{
path: '/login',
loadChildren: '../login/login.module#LoginPageModule'
}
]
},
{
path: '',
redirectTo: '/tabs/tab1',
pathMatch: 'full'
}
]
},
{
path: '',
redirectTo: '/tabs/tab1',
pathMatch: 'full'
}
];
@NgModule({
imports: [
RouterModule.forChild(routes)
],
exports: [RouterModule]
})
export class TabsPageRoutingModule {}
我想在用户未登录时使用tab3打开登录页面,而在用户登录时打开帐户页面。
所以我必须添加任何canActivate
才能起作用。
非常感谢您的帮助。
答案 0 :(得分:2)
在您的tabs.html
内部
您可以在用户登录或注销时使用* ngIf显示选项卡。采取一种可以使用的布尔逻辑或其他逻辑,然后将其显示在标签页中。
<ion-tab-bar slot="bottom">
<ion-tab-button tab="profile" *ngIf="userLogin == true">
<ion-icon name="person"></ion-icon>
<ion-label>Profile</ion-label>
</ion-tab-button>
<ion-tab-button tab="login" *ngIf="userLogin == false">
<ion-icon name="settings"></ion-icon>
<ion-label>Login</ion-label>
</ion-tab-button>
</ion-tab-bar>