angular - 检查 Angular2 中的权限

标签 angular typescript

我是 angular2 的新手,我有一个侧边栏,我想根据用户权限显示和隐藏它

这就是我所做的

 <ul class="sidebar-menu">
  <li class="header">MAIN NAVIGATION</li>

  <li [hidden] = "canAccess('dashboard')">
    <a routerLinkActive="active" routerLink="/dashboard">
      <i class="fa fa-dashboard"></i>
      <span>Dashboard</span>
    </a>
  </li>
 </ul>

然后在仪表板组件中

canAccess(permission:string){
return this._dashboardService.canUser(permission)
  .subscribe( res=>{
    return res
  },
    err=>{
      return false;
    }

  )

}

然后是_dashboardservice

//http client attaches the access token stored in local storage

  canUser(permission:string):Observable<boolean>{  //returns true or fals
    return this._httpclient.post(this.url,permission) 
     .map(this.extractData)

 }

以上进入无限循环,始终执行 http post

我可能会错过什么

最佳答案

首先,在列表项中使用*ngIf而不是[hidden]

现在到代码的重要部分进入无限循环。 列表项的可见性绑定(bind)到返回ObservablecanAccess()函数。它应该绑定(bind)到返回 bool 值或可测试值的变量函数操作对于真/假

做这样的事情:

<ul class="sidebar-menu">
    <li class="header">MAIN NAVIGATION</li>
    <li [*ngIf] = "showDashboard">
        <a routerLinkActive="active" routerLink="/dashboard">
            <i class="fa fa-dashboard"></i>
            <span>Dashboard</span>
        </a>
    </li>
</ul>

该组件的代码应包含以下内容:

private showDashboard: boolean = false;

// Call this function appropriately on component init
canAccess (permission:string) {   

    return this._dashboardService
        .canUser(permission)
        .subscribe(res => {
            this.showDashboard = true;
        },
        err => {
            this.showDashboard = false;
        }
    )
}

关于angular - 检查 Angular2 中的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41869106/

相关文章:

javascript - Moment 和 LocalDate 之间的转换减去日

javascript - 带 typescript 的 Protractor 中的下拉菜单

javascript - Google Chrome 控制台未显示正确、准确的 JavaScript 行号

javascript - 使用 observable - angular2 向所有订阅者元素发送数据

angular - 带有两行标题的 Mat-table,使用 Angular 8

angular - app.shared.module.ts 和 app.server.module.ts 之间的差异

typescript 根据嵌套成员推断父类型

html - 调整大小并添加白色边框,以便在以 Angular 上传图像时始终有相同的图片大小

typescript - 为electron配置hapi、typescript、webpack、angular2

javascript - 类内的 typescript 私有(private)类或类似的东西