angular - 如何以角度更改路线对象数据
问题描述
我有如下路线文件
const routes: Routes = [
{
path: '',
component: DashboardComponent,
canActivate: [DashboardRoleGuard],
children: [{
path: 'admin',
component: AdminDashboardComponent
// canActivateChild: [RedirectGuard]
}, {
path: 'user',
component: UserDashboardComponent
// canActivateChild: [RedirectGuard]
}],
data: {
expectedRole1: ["admin", "SiteAdmin", "OrgAdmin", "SuperAdmin"],
expectedRole2: ["user", "NormalUser"],
redirectTo: "",
isManual: false
}
}]
在数据部分我有一个标志 isManual。所以我想改变标志的值。我在路由守卫中尝试了以下代码。
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
// this will be passed from the route config
// on the data property
const expectedRole1 = next.data.expectedRole1;
const expectedRole2 = next.data.expectedRole2;
debugger
console.log(next.data);
if (state.url.indexOf("admin") > -1 || state.url.indexOf("user") > -1) {
next.data["isManual"] = true;
}
但是值没有修改,任何人都让我知道如何做到这一点。
解决方案
为什么不在isManual
子路由上添加属性:
const routes: Routes = [
{
path: '',
component: DashboardComponent,
canActivate: [DashboardRoleGuard],
children: [{
path: 'admin',
component: AdminDashboardComponent,
data: {isManual: true}
// canActivateChild: [RedirectGuard]
}, {
path: 'user',
component: UserDashboardComponent,
data: {isManual: true}
// canActivateChild: [RedirectGuard]
}],
data: {
expectedRole1: ["admin", "SiteAdmin", "OrgAdmin", "SuperAdmin"],
expectedRole2: ["user", "NormalUser"],
redirectTo: "",
isManual: false
}
推荐阅读
- mysql - 在 MySQL 上进行查询以搜索快速数据
- xml - xslt 组合不同组中的属性
- javascript - 从 Fullcalendar 的 eventClick 信息访问子元素
- arrays - 从对象数组创建唯一数组
- python - 在没有日期信息的条形图中绘制多天的数据
- character-encoding - 如何在服务人员中处理 301 重定向?
- python - 当 xml 作为字符串输入时,如何在 ElementTree 中获取 xml 的命名空间?
- c++ - 不明白这个程序的输出
- javascript - 这是一种合理的类继承方法吗?
- java - 删除外部库中不需要的 jar 以部署在 Tomcat 服务器上