angular - 如何隐藏导航菜单中的名称?

标签 angular

如何在特定用户的导航菜单中隐藏名称。即,我想为安装了“用户” Angular 色的用户隐藏“管理”。也就是说,如果用户以用户 Angular 色登录,则菜单列表中的名称“Administration”将为他隐藏。

:

import { Component, OnInit } from '@angular/core';
import {AuthService} from "../../services/auth/auth.service";

export interface RouteInfo {
    path: string;
    title: string;
    icon: string;
    class: string;
}

export const ROUTES: RouteInfo[] = [
    { path: 'notes',  title: 'Notes',  icon: 'ti-comment', class: '' },
    { path: 'contacts', title: 'Contacts',  icon:'ti-info', class: '' },
    { path: 'users', title: 'Users',  icon:'ti-user', class: '' },
    { path: 'user_notes', title: 'Notes (World)',  icon:'ti-world', class: '' },
    { path: 'admins', title: 'Administration',  icon:'ti-server', class: '' }
];

@Component({
  selector: 'app-sidebar',
  templateUrl: './sidebar.component.html',
  styleUrls: ['./sidebar.component.css']
})

export class SidebarComponent implements OnInit {
  public menuItems: any[];

  constructor(
    public authService:AuthService
) {}

  ngOnInit() {
      this.menuItems = ROUTES.filter(menuItem => menuItem);
  }

}

html:

...
<li *ngFor="let menuItem of menuItems" routerLinkActive="active" class="{{menuItem.class}}">
  <a [routerLink]="[menuItem.path]">
    <i class="{{menuItem.icon}}"></i>
    <p>{{menuItem.title}}</p>
  </a>
</li>
...

最佳答案

您可以在ROUTES 中多添加一个字段role。在过滤菜单时,您可以检查该菜单项是否允许 currentRole

export const ROUTES: RouteInfo[] = [
    { path: 'notes',  title: 'Notes',  icon: 'ti-comment', class: '', role:[user, admin] },
    { path: 'contacts', title: 'Contacts',  icon:'ti-info', class: '', role:[user, admin] },
    { path: 'users', title: 'Users',  icon:'ti-user', class: '', role:[user, admin] },
    { path: 'user_notes', title: 'Notes (World)',  icon:'ti-world', class: '', role:[user, admin] },
    { path: 'admins', title: 'Administration',  icon:'ti-server', class: '', role:[admin] }
];

@Component({
  ...
})

export class SidebarComponent implements OnInit {
    ...
    currentRole: string; // set value in it in constructor

    constructor(public authService:AuthService) {
        this.currentRole = 'user'; // change value on the basis of login
    }

    ngOnInit() {
        this.menuItems = ROUTES.filter(menuItem => menuItem.role.includes(this.currentRole));
    }
}

关于angular - 如何隐藏导航菜单中的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51893915/

相关文章:

Angular 4 Jasmine Actual 不是函数

angular - RxJS - 使用成对确认和恢复输入字段

Angular 和 NGX-Masonry - 显示问题

javascript - AppModule 中导入的共享模块

angular - 类型元素上不存在单选按钮值

php - 从 Angular 2 Web 应用程序在 MySQL 中插入数据

Angular Timer 来计算时间

angular - Safari、Iphone 上的 Firebase 电话身份验证问题

angular - AWS API Gateway 资源中的 "Enable CORS"?

Angular 9 引入了需要加载的全局 '$localize()' 函数