如果管理员未登录您是否可以过滤ngFor以不显示管理员用户。

时间:2017-10-25 10:46:09

标签: angular ngfor ngif

我从数据库中提取用户列表,用户列表中包含管理员用户和非管理员用户。我想在管理员登录时显示管理员用户,如果没有管理员登录则不显示管理员用户。这是我当前的代码:

 <tbody>
              <tr *ngFor="let user of users">
                <td>{{user.Salutation.Description === "None" ? "-" : user.Salutation.Description}}</td>
                <td>{{user.FirstName}}</td>
                <td>{{user.Surname}}</td>
                <td>{{user.Region.Description === "None" ? "-" : user.Region.Description}}</td>
                <td>{{user.Institution === null ? "-" : user.Institution}}</td>
                <td>{{user.PrimaryResearchField.Description === "None" ? "-" : user.PrimaryResearchField.Description}}</td>
                <td>{{user.OrcidID === null ? "-" : user.OrcidID}}</td>
                <td>

                  <button title="View" class="btn btn-primary" (click)="viewUser(user.UserKey)">View</button>
                  <button *ngIf="isAdmin || (isSi && userKey == user.UserKey)" title="Edit" class="btn btn-success" (click)="editUser(user.UserKey)">Edit</button>
                  <button *ngIf="isAdmin" title="Delete" class="btn btn-danger" (click)="deleteUser(user.UserKey)">Delete</button>
                </td>
              </tr>
              </tbody>

提前致谢。

2 个答案:

答案 0 :(得分:2)

简短:

<ng-template *ngFor="let user of users">
    <tr *ngIf="isAdmin && user.isAdmin"> // check all your conditions here
    .....
    </tr>
</ng-template>
  

另一种方式是:

     

1)根据ngOnInit从组件端过滤用户数组   登录用户

     

2)使用管道功能过滤数组

答案 1 :(得分:0)

感谢Vivek Doshi的帮助。我设法通过一些调整来显示正确的信息。使用<ng-template>没有工作,表中会显示任何内容,因此我将*ngFor添加到<tbody>然后我添加了以下行<tr *ngIf="isAdmin && (user.TestRole.Description === 'Admin' || user.TestRole.Description === 'Senior Investigators') || user.TestRole.Description === 'Senior Investigators'">,然后加载了所有用户如果非管理员用户已登录,则admin已登录,非管理员用户已登录。