【问题标题】:Unexpected token F in JSON at position 0 at JSON.parse (<anonymous>) in angularJSON.parse (<anonymous>) 位置 0 处 JSON 中的意外标记 F
【发布时间】:2018-10-18 08:25:09
【问题描述】:

我正在尝试在我的项目中实现基于角色的授权。我正在尝试根据角色从菜单项的导航栏中隐藏某些项目。 我遇到了上述错误。我该如何解决这个问题?

service.ts

roleMatch(allowedRoles):boolean{
    var isMatch =false;
    var userRoles:string[]=JSON.parse(localStorage.getItem('userroles')); //the error is here
    allowedRoles.forEach(element => {
      if(userRoles.indexOf(element)>-1){
        isMatch=true;
        return false;
      }
    })
    return isMatch;
  }

component.html

<li *ngIf="Authentication.roleMatch(['Fetch user',
          'add user',
          'edit user',
          'change status',
          'delete user',
          'delete role',
          'Fetch Recuirtmentdetails'])">
          <a  routerLink="/role"class="dropdown-item">User Role</a>
</li>

【问题讨论】:

  • localStorage.getItem('userroles') 的值是多少? (你可以使用console.log查看或debugger声明)
  • 你在做setItem时使用JSON.stringify()吗?
  • 看看someincludes等数组函数是值得的,它们可以帮助你的代码更具可读性。
  • userroles的值为Fetch user,add user,edit user,change status,delete user,delete role,Fetch Recuirtmentdetails
  • 不,我在做 setItem 时没有使用 JSON.stringify()。

标签: json angular angular5 angular6


【解决方案1】:

如你所说userroles的值是Fetch user,add user,edit user,change status,delete user,delete role,Fetch Recuirtmentdetails

它是 String 并且您正在对其执行 JSON.parse()

你只需要 var userRoles:string[] 这样你就可以做到以下几点:

var userRoles:string[] = localStorage.getItem('userroles').split(',');

你会得到你预期的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-19
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    相关资源
    最近更新 更多