Угловое преобразование объекта в шаблоне без пользовательской трубы - PullRequest
1 голос
/ 29 марта 2019

У меня проблема с преобразованием.Я перечисляю некоторых пользователей в 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>

Я хочу преобразовать roleNames (они выглядят так: [ADMIN_USER]).Каждый пользователь может иметь несколько ролей ([AGENT_USER, CLINIC_USER]).

Если I console.log typeof внутри аргумента roleNames, он говорит, что это объект.И, к сожалению, никакой другой канал не может работать с объектами, кроме значения ключа, но я не могу сделать ngFor внутри контейнера ng, чтобы он был «невидимым».user, Clinic User и т.д ...

Удалось сделать это без канала, потому что я не хотел бы делать больше мусора, поскольку он используется только один раз.Однако, если бы его использовали больше, я бы сделал для него трубу.

Решение:

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