2017-11-08 23 views
0

ID는 내 역할 값이 해당 요소에 정의 된 * ngFor 내부에서 * ngIf를 사용합니다.Angular2 * ngIf 내부의 Object 값 * ngFor

<li class="nav-item" *ngFor="let entry of naviEntries"> 
     <button *ngIf="{{entry.role}}" ...>{{entry.name}}</button> 
</li> 

을 그리고 내 구성 요소 내부 :

내 템플릿 그렇게 보이는 사용자가 로그인 또는 사용자가 관리자 인 경우에 대한 검사 ngOnInit 기능 메신저 내부

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'}); 
     ... 

. 이제

내가 NaviEntries에 밀려 개체가

내가 내 구성 요소에 사용되는 변수로 개체 값을 사용할 수있는 나비

에 표시 할 수있는 경우 * ngIf 확인하고 싶습니다?

Excample :

NaviEntry => 내 구성 요소 => 관리자에서

{name: 'Admin', link: '/admin', role: 'admin'} : 부울 = TRUE;

템플릿 :

*ngIf="{{entry.role}}" => * ngIf = "관리자"=> 진정한 => 쇼 항목

답변

2

난 당신이 같은 필요가 있다고 생각 :

*ngIf="(entry.role === 'admin' && admin) || (entry.role === 'visitor' && visitor) || (entry.role === 'user' && user)" 

가 읽어 보시기 바랍니다 :

https://angular.io/api/common/NgIf

당신이 사용하고있는 것처럼 bit wrong wa 와이. 수정 될

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

// template side 
*ngIf="roleAccess[entry.role]" 
난 당신이 내가, 표준을 이해 해달라고 생각
+0

, 하지만 난 다른 역할이 :


최적화 된 방법으로 수행하는 방문자, 사용자, 관리자, ... 그리고 당신의 방법을 관리자에게만 묻습니다 – xQp

+0

당신은 각 역할을 똑같이 확인할 수 있습니다. 어떤 역할을 정의 할 것인지, 어떻게 표현할 것인가를 정의 할 수는 없습니다. @ xQp는 내가 좋아할 조건을 알려줍니다. –

+0

thats i ment, 당신은 이해하지 못한다. 내 NaviEntries에 객체 배열이 있습니다. 각각에는 그것의 자신의 역할이 있습니다. 그리고 나는 그 역할을 개별적으로, 기본적으로 확인하고 싶습니다. 제 질문은 "변수"로 개체 값을 사용할 수 있는지입니다. 예를 들어, 내 항목에 entry.role = 'admin'이 있습니다. this.admin = true/false; – xQp