2017-06-17 30 views
0

有一個指令,其中,下面的代碼匹配,如果結果並隱藏內容給用戶與另一個角色如何在ts中匹配變量和html中指令的值?

import { 
    Directive, 
    Input, 
    OnInit, 
    TemplateRef, 
    ViewContainerRef 
} from '@angular/core'; 

import { ActivatedRoute } from '@angular/router'; 
import { User, UserService, Profile, ProfilesService } from '../shared'; 

@Directive({ selector: '[userRoles]' }) 
export class UserRolesDirective implements OnInit { 
    constructor(
    private templateRef: TemplateRef<any>, 
    private userService: UserService, 
    private viewContainer: ViewContainerRef, 
    private route: ActivatedRoute, 
    private profilesService: ProfilesService 
) {} 

    profile: Profile; 
    roles: string; 
    currentUser: User; 


    ngOnInit() { 
      this.route.data.subscribe(
       (data: {profile: Profile}) => { 
       this.profile = data.profile; 
       this.userService.currentUser.subscribe(
        (userData: User) => { 
        this.currentUser = userData; 
        console.log(this.currentUser.roles); 
        if (this.currentUser.roles ==) { 
         this.viewContainer.createEmbeddedView(this.templateRef); 
        } else { 
         this.viewContainer.clear(); 
        } 
        } 
       ); 
       } 
      ); 
    } 

    @Input() set userRoles(roles: string) { 
    this.roles = roles; 
    } 

} 

有HTML代碼,其中I輸出該指令

<div class="col-sm-12" *userRoles="['Admin']"> 
     <div class="feed-toggle mt-3"> 
      <ul class="nav nav-pills outline-active"> 
      <li class="nav-item"> 
       <a class="nav-link" 
       [ngClass]="{'active': listConfig.type === 'feed'}" 
       (click)="setListTo('feed')"> 

的值夥計們幫助,我該如何匹配this.currentUser.roles和userRoles結果 Indexof不工作,或者我做錯了什麼。

!this.userRoles || this.userRoles.indexOf(this.currentUser.roles) != -1 

PS:如果我在頁面上有多個指令,系統會工作嗎?

回答

0
this.currentUser.roles == this.role[0] 
+0

儘管此代碼可能會回答問題,但提供有關如何解決問題和/或爲何解決問題的其他上下文會提高答案的長期價值。 – Badacadabra