【问题标题】:Angular 2 dynamic menu loading and routingAngular 2 动态菜单加载和路由
【发布时间】:2017-12-20 12:47:42
【问题描述】:

我正在尝试设计一个网站。用户可以具有不同的角色,例如管理员、经理或员工,这将在登录期间决定。其余 url 返回用户登录的类型。我想根据用户的类型动态加载视图。我的意思是动态地侧边栏必须加载特定于该用户的菜单,并且登录页面必须是动态的,具体取决于用户。请建议我如何操作或将我重定向到适当的资源。因为这是我没有的起点任何要附加的代码示例。请帮助。提前致谢。

更新

到目前为止,有一个登录组件,它将像这样重定向到我的主页

this.router.navigate(['/home']);

,主页菜单是从数据库中加载的

this.menuLoader.getFunctionalities(this.empId).subscribe(response => {
      this.roleArray=response;
      this.roleArray.forEach((element) => {
        this.funtionalities = element.functionList;
        console.log(element.functionList);
      });
    });//subscribe ends here
  }

在html中我有

<li *ngFor = "let x of funtionalities" (click)="closeSidenav()"> <a class="item white"  [routerLink] = "'/home'+x.FunctionValue">{{ x.FunctionName.toUpperCase()  }}</a></li>

我有类似的数据库结构

{
    "_id" : ObjectId("59676398506d3c2e58feb5d2"),
    "role" : "admin",
    "functionList" : [ 
        {
            "FunctionName" : "Create CFT",
            "FunctionValue" : "/createCFT"
        }, 
        {
            "FunctionName" : "Update CFT",
            "FunctionValue" : "/updateCFT"
        }, 
        {
            "FunctionName" : "Add Employee",
            "FunctionValue" : "/addEmployee"
        }, 
        {
            "FunctionName" : "Add Resource",
            "FunctionValue" : "/addResource"
        }, 
        {
            "FunctionName" : "Add Employees-Excel",
            "FunctionValue" : "/addEmployeesExcel"
        }, 
        {
            "FunctionName" : "Add Holiday List",
            "FunctionValue" : "/holidayList"
        }, 
        {
            "FunctionName" : "Add Employees to CFT",
            "FunctionValue" : "/addEmployeeToCft"
        }
    ]
}

【问题讨论】:

  • 你在代码中做了什么。请更新它以发布。这个问题太宽泛了
  • 更新了问题 aravind。

标签: angular angular2-routing angular2-services angular2-directives


【解决方案1】:

您的functionList属性包含*ngFor修改中未使用的路由内容,如下所示,

<li *ngFor = "let x of funtionalities.functionList" (click)="closeSidenav()"> 
     <a class="item white"  [routerLink] = "'/home'+x.FunctionValue">
          {{ x.FunctionName.toUpperCase()  }}
     </a>
</li>

【讨论】:

  • 分配给组件代码中的功能,问题是关于如何进行动态加载。我认为我遵循的方法不是正确的方法。
  • 在尝试这个时你有没有得到任何错误。所有路由定义都必须在RouterModule 中你有这些定义吗?
  • 我没有收到任何错误,并且我有一个定义为 wel 的路由模块。这不是问题。问题是“用于执行上述问题的方法是什么。”因为方法我正在使用,我真的不认为这是要使用的首选方法
  • 为什么li 标签中有(click) 方法? 因此,当您单击超链接时,可能会执行父 closeSideNav() 而不是路由
  • 用于显示侧边栏。如果我点击它,将在正文部分加载相应的路线。关闭侧导航只有一个 jquery 功能来关闭侧导航。路由按预期工作'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
  • 1970-01-01
  • 2016-06-23
  • 1970-01-01
相关资源
最近更新 更多