Aurelia-在navmenu中隐藏路由的结果是什么也不显示
我想隐藏作为用户角色的路由,我在上发现了这个问题,因此类似。我试图在我的typescript项目中实现它,但它什么也没有返回,我不知道为什么 这是我目前的执行情况Aurelia-在navmenu中隐藏路由的结果是什么也不显示,aurelia,Aurelia,我想隐藏作为用户角色的路由,我在上发现了这个问题,因此类似。我试图在我的typescript项目中实现它,但它什么也没有返回,我不知道为什么 这是我目前的执行情况 import { autoinject, bindable, bindingMode } from "aurelia-framework"; import { Router } from 'aurelia-router' @autoinject export class Navmenu { public userName: str
import { autoinject, bindable, bindingMode } from "aurelia-framework";
import { Router } from 'aurelia-router'
@autoinject
export class Navmenu {
public userName: string = 'anonymous';
private userRole = localStorage.getItem("user_role");
constructor(public authService: AuthService, public router: Router) {
this.userName = authService.getUserName();
console.log("userRole: ", this.userRole);
}
get routes() {
return this.router.navigation.filter(r => r.settings.roles === this.userRole );
}
}
My console.log在控制台中显示Admin,但我的筛选器未对其进行筛选
以下是我构建路线的方式:
{
route: ["", "scheduler"],
name: "scheduler",
settings: {
icon: "scheduler",
auth: true,
roles: ["Employee", "Admin"], //These are my roles for this route.
pos: "left"
},
moduleId: PLATFORM.moduleName("../components/scheduler/scheduler"),
nav: true,
title: "scheduler"
},
角色是一个数组
如何构造筛选器,使其与任何用户角色匹配,从而返回筛选路由的子集?查看路由器配置中的这一行:
roles: ["Employee", "Admin"]
然后在你的getter中:
r.settings.roles === this.userRole
roles是一个数组,而this.userRole是一个字符串,因此===运算符将始终返回false。请使用indexOf或其他索引:
或
return this.router.navigation.filter(r => r.settings.roles.indexOf(this.userRole) > -1);
return this.router.navigation.filter(r => r.settings.roles.some(t => t === this.userRole));