Angular2*ngIf,包含来自对象内部的值*ngFor

Angular2*ngIf,包含来自对象内部的值*ngFor,angular,ngfor,angular-ng-if,Angular,Ngfor,Angular Ng If,我想在*ngFor中使用*ngIf,其中我的角色值是为该元素定义的 我的模板如下所示: <li class="nav-item" *ngFor="let entry of naviEntries"> <button *ngIf="{{entry.role}}" ...>{{entry.name}}</button> </li> 在ngOnInit函数中,im检查用户是否已登录或用户是否是管理员 现在,我想用*ngIf检查我推送到Nav

我想在*ngFor中使用*ngIf,其中我的角色值是为该元素定义的

我的模板如下所示:

<li class="nav-item" *ngFor="let entry of naviEntries">
      <button *ngIf="{{entry.role}}" ...>{{entry.name}}</button>
</li>
在ngOnInit函数中,im检查用户是否已登录或用户是否是管理员

现在,我想用*ngIf检查我推送到NaviEntries的对象是否允许在Navi上显示

我可以使用对象值作为组件中使用的变量吗

例如:

NaviEntry=>
{name:'Admin',link:'/Admin',role:'Admin'}

在我的组件中=>admin:boolean=true

模板:


*ngIf=“{{entry.role}}”
=>*ngIf=“admin”=>true=>show item

我想你需要这样的东西:

*ngIf="(entry.role === 'admin' && admin) || (entry.role === 'visitor' && visitor) || (entry.role === 'user' && user)"
请阅读:

因为你使用它的方式有点错误


优化方法:

// component side
roleAccess = {'admin' : false , 'user' : false , 'visitor' : true}

// template side
*ngIf="roleAccess[entry.role]"

我想你不明白我的意思,那会被修复,但我有不同的角色:访问者,用户,管理员。。。你的方式只会要求管理员你可以用同样的方式检查每个角色,你没有定义哪个角色或如何定义哪个角色可以显示或不显示,@xQp,,让我知道我将使其符合的条件是什么,你不明白我的意思我有一个包含NaviEntries的对象数组。每个人都有自己的角色。我想单独检查这个角色,基本上,我的问题是,我是否可以使用一个对象值作为“变量”,例如,我的条目有Entry.role='admin',如果这可以用来检查this.admin=true/false;给你@xQpgo去哪里?我看不出一个答案适合我的问题,对不起,你应该为你的用户对象使用一个合适的界面,为你的用户角色使用枚举。您可以这样做:{{entry.name}
// component side
roleAccess = {'admin' : false , 'user' : false , 'visitor' : true}

// template side
*ngIf="roleAccess[entry.role]"