角度转换模板中不带自定义管道的对象

时间:2019-03-29 11:05:03

标签: angular angular-template angular-pipe

我对转换有疑问。我在这样的p表中列出了一些用户:

<td *ngFor="let col of columns">
  <ng-container [ngSwitch]="col.field">
    <ng-container *ngSwitchCase="'status'">
      {{user[col.field] | titlecase}}
    </ng-container>
    <ng-container *ngSwitchCase="'roleNames'">
      {{user[col.field]}}
    </ng-container>
    <ng-container *ngSwitchDefault>
      {{user[col.field]}}
    </ng-container>
  </ng-container>
</td>

我想转换角色名(它们看起来像这样:[ADMIN_USER])。 每个用户可以具有多个角色([AGENT_USER,CLINIC_USER])。

如果我在RoleNames案例中console.log typeof表示它是一个对象。 而且遗憾的是,除了键值之外,其他管道都无法使用对象,但是我无法在ng容器内将ngFor设置为“不可见”。

如何对这些roleName进行魔术处理,使其变为:管理员用户,诊所用户等...

设法不使用管道来执行此操作,因为我不想做更多的垃圾,因为它只使用了一次。但是,如果要更多地使用它,我会为此做一个管道。

解决方案:

<ng-container *ngSwitchCase="'roleNames'">
          {{sliceRoles(user[col.field]) | titlecase}}
        </ng-container>


sliceRole(roles: object) {
    const formattedRoles = [];
    let finalRoles = '';
    Object.values(roles).forEach((role) => {
      const newRole = role.replace('_', ' ');
      formattedRoles.push(newRole.concat(', '));
    });
    finalRoles = finalRoles.concat(...formattedRoles).slice(0, -2);
    return finalRoles;
  }

0 个答案:

没有答案