Aurelia-在navmenu中隐藏路由的结果是什么也不显示

Aurelia-在navmenu中隐藏路由的结果是什么也不显示,aurelia,Aurelia,我想隐藏作为用户角色的路由,我在上发现了这个问题,因此类似。我试图在我的typescript项目中实现它,但它什么也没有返回,我不知道为什么 这是我目前的执行情况 import { autoinject, bindable, bindingMode } from "aurelia-framework"; import { Router } from 'aurelia-router' @autoinject export class Navmenu { public userName: str

我想隐藏作为用户角色的路由,我在上发现了这个问题,因此类似。我试图在我的typescript项目中实现它,但它什么也没有返回,我不知道为什么

这是我目前的执行情况

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));