【发布时间】:2020-05-14 12:33:27
【问题描述】:
我有一个路由模块 routing.module.ts 文件,我想根据用户是否是管理员来更改 redirectTo 路径。
我的想法是使用服务来捕获和保存价值,这将有助于保持它应该去的地方,但它不会改变。我尝试了很多方法,但我无法让它发挥作用。有什么想法吗?
routing.module.ts 上有我当前的代码
任何有关如何使其工作和解释过程的帮助将不胜感激
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { TabsPage } from './tabs.page';
import { DataService } from '../services/data.service'
const routes: Routes = [
{
path: '',
component: TabsPage,
children: [
{
path: '',
redirectTo: DataService.prototype.isAdmin() ? 'home' : 'dashboard',
pathMatch: 'full'
},
{
path: 'home',
children: [
{
path: '',
loadChildren: () =>
import('../home/home.module').then(m => m.HomePageModule)
}
]
},
{
path: 'dashboard',
children: [
{
path: '',
loadChildren: () =>
import('../dashboard/dashboard.module').then(m => m.DashboardPageModule)
}
]
},
{
path: 'profile',
children: [
{
path: '',
loadChildren: () =>
import('../profile/profile.module').then(m => m.ProfilePageModule)
}
]
},
{
path: 'menu',
children: [
{
path: '',
loadChildren: () =>
import('../menu/menu.module').then(m => m.MenuPageModule)
}
]
},
]
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class TabsPageRoutingModule {}
还有 data.service.ts 文件
import { Injectable } from '@angular/core';
import { Storage } from '@ionic/storage';
@Injectable({
providedIn: 'root'
})
export class DataService {
User = {
isAdmin: false
}
constructor(
private storage: Storage,
) { }
setUser(isAdmin: boolean) {
this.User.isAdmin = isAdmin
}
isAdmin() {
return this.User.isAdmin
}
}
【问题讨论】:
标签: angular ionic-framework angular-ui-router ionic4