Angular2 *ngIf 的值来自 *ngFor 中的 Object
Angular2 *ngIf with a value from Object inside *ngFor
我想在 *ngFor 中使用 *ngIf,其中为该元素定义了我的角色值。
我的模板是这样的:
<li class="nav-item" *ngFor="let entry of naviEntries">
<button *ngIf="{{entry.role}}" ...>{{entry.name}}</button>
</li>
在我的组件中:
enter code here`export class NaviComponent implements OnInit {
naviEntries: NaviEntry[];
visitor: boolean = true;
user: boolean = false;
admin: boolean = false;
constructor() { ... }
ngOnInit() {
...
this.naviEntries.push({name: 'Home', link: '', role: 'visitor'});
this.naviEntries.push({name: 'User', link: '/user', role: 'user'});
this.naviEntries.push({name: 'Admin', link: '/admin', role: 'admin'});
...
在 ngOnInit 函数中,我正在检查用户是否已登录或用户是否为管理员。
现在我想用 *ngIf 检查我推送到 NaviEntries 的对象是否允许在 Navi 上显示
我可以在我的组件中使用对象值作为变量吗??
示例:
NaviEntry => {name: 'Admin', link: '/admin', role: 'admin'}
在我的组件中 => admin: boolean = true;
模板:
*ngIf="{{entry.role}}"
=> *ngIf="admin" => true => 显示项目
我想你需要这样的东西:
*ngIf="(entry.role === 'admin' && admin) || (entry.role === 'visitor' && visitor) || (entry.role === 'user' && user)"
请阅读:
https://angular.io/api/common/NgIf
因为你用的有点不对。
优化方法:
// component side
roleAccess = {'admin' : false , 'user' : false , 'visitor' : true}
// template side
*ngIf="roleAccess[entry.role]"
我想在 *ngFor 中使用 *ngIf,其中为该元素定义了我的角色值。
我的模板是这样的:
<li class="nav-item" *ngFor="let entry of naviEntries">
<button *ngIf="{{entry.role}}" ...>{{entry.name}}</button>
</li>
在我的组件中:
enter code here`export class NaviComponent implements OnInit {
naviEntries: NaviEntry[];
visitor: boolean = true;
user: boolean = false;
admin: boolean = false;
constructor() { ... }
ngOnInit() {
...
this.naviEntries.push({name: 'Home', link: '', role: 'visitor'});
this.naviEntries.push({name: 'User', link: '/user', role: 'user'});
this.naviEntries.push({name: 'Admin', link: '/admin', role: 'admin'});
...
在 ngOnInit 函数中,我正在检查用户是否已登录或用户是否为管理员。
现在我想用 *ngIf 检查我推送到 NaviEntries 的对象是否允许在 Navi 上显示
我可以在我的组件中使用对象值作为变量吗??
示例:
NaviEntry => {name: 'Admin', link: '/admin', role: 'admin'}
在我的组件中 => admin: boolean = true;
模板:
*ngIf="{{entry.role}}"
=> *ngIf="admin" => true => 显示项目
我想你需要这样的东西:
*ngIf="(entry.role === 'admin' && admin) || (entry.role === 'visitor' && visitor) || (entry.role === 'user' && user)"
请阅读:
https://angular.io/api/common/NgIf
因为你用的有点不对。
优化方法:
// component side
roleAccess = {'admin' : false , 'user' : false , 'visitor' : true}
// template side
*ngIf="roleAccess[entry.role]"