Строка экспорта таблицы PrimeNg Turbo с объектом

Я пытаюсь экспортировать данные из таблицы Primeng Turbo в csv. Проблема в том, что «строки» здесь, в приведенном ниже коде, представляют собой массив объектов, которые я отображаю в теле таблицы, используя ngIf на основе ключей соответственно, поэтому отображение не является проблемой, но когда я пытаюсь экспортировать в csv, я получаю объект в ячейке, а не в свойстве объекта. Есть ли способ получить свойство объекта с помощью datatable.exportCSV()

Вот над чем я работаю

 <p-table #dt [columns]="cols" [value]="rows" selectionMode="multiple" [(selection)]="selectedResults">

<ng-template pTemplate="caption">
Test Set - {{testsetid}}
<div class="ui-helper-clearfix">
  <button type="button" pButton icon="fa fa-file-o" iconPos="left" label="All Data" (click)="dt.exportCSV()" style="float:left"></button>
  <button type="button" pButton icon="fa fa-file" iconPos="left" label="Selection Only" (click)="dt.exportCSV({selectionOnly:true})" style="float:right"></button>
</div>

 </ng-template>
 <ng-template pTemplate="header" let-columns>
<tr>
  <th *ngFor="let col of cols">
    {{col.header}}
  </th>
  </tr>
 </ng-template>
 <ng-template pTemplate="body" let-row let-columns="cols">
   <tr [pSelectableRow] = "row">
  <td *ngFor="let col of cols" [ngStyle]="{'background-color': getColor(row[col.field]['status'])}">
    <span *ngIf="col.field == 'script_name'" >{{row[col.field]}}</span>
    <span *ngIf="col.field != 'script_name'" >
      <a [routerLink]="['/localrunreport' , row[col.field]['sessionId']]"> {{row[col.field]['status']}}</a>
    </span>
  </td>
</tr>
</ng-template>



</p-table>

Вот что я получаю в файле csv: экспортированный csv

Это происходит из-за того, что массив объектов имеет тип:

[{'script_name': value, 'device_name':{'status':value,'sessionId':value}}}

Итак, как вы можете видеть, проблема заключается в том, что ключ device_name имеет значение объекта. Есть ли способ, которым я могу иметь свойство obj в файле csv.


person Sajid Manzoor    schedule 22.06.2018    source источник


Ответы (1)


Попробуйте сделать ваш HTML похожим на

<tr>
  <td *ngFor="let col of cols">
    {{row[col.field]}}
  </td>
</tr>

путем передачи условий HTML ngIf в код TS.

Затем вы сможете напрямую экспортировать значения.

person Antikhippe    schedule 25.06.2018
comment
да, похоже, что смена ТС - единственный выход. - person Sajid Manzoor; 26.06.2018