javascript - 在 Angular 6+ 中,如何用图标替换 <p-dataTable> 和 <p-column> 标记中的值?

标签 javascript arrays angular datatable

我有一个从 java 后端到 Angular 6 前端的数组(使用 p-dataTablep-column 标签来显示它)。


数组字段的名称为:“0”、“1”、“2”。 字段“2”有 1 个字符(“E”或“D”- 表示启用/禁用)。

我的问题是:
在我的实现中(见下文)是否可以用绿色复选标记图标(fontawesome)和“F”替换“E”带有红色 X 图标(但我想使用 p-dataTable 和 p-column 标签)?

我的代码是:

<p-dataTable *ngIf="!loading && hasEntries"
           [value]="list"
           [(selection)]="selectedRowData"
           (onRowSelect)="onRowSelect($event)"
           [selectionMode]="selectionMode">

<p-column *ngFor="let col of columns"
          [field]="col.field"
          [header]="col.header"
          [sortable]="true">
</p-column>

我想用字符(“E”和“F”)替换的图标的代码是:

<i class="fa fa-check" aria-hidden="true"></i>
<i class="fa fa-times" aria-hidden="true"></i>

列的定义:

  this.columns = [
  {
    field: '10',
    header: this.translationService.getTranslation('...')
  },
  {
    field: '9',
    header: this.translationService.getTranslation('...')
  },
  {
    field: '11',
    header: this.translationService.getTranslation('...')
  },
  {
    field: '7',
    header: this.translationService.getTranslation('....')
  },
  {
    field: '5',
    header: this.translationService.getTranslation('....'),
  },
];

以及传入请求的结构图片: What is comming from the backend

非常感谢您的热心解答!

最佳答案

您可以传递标题和正文所需的模板,在这种情况下,您可以完全控制要如何显示值

<p-dataTable *ngIf="!loading && hasEntries"
           [value]="list"
           [(selection)]="selectedRowData"
           (onRowSelect)="onRowSelect($event)"
           [selectionMode]="selectionMode">

  <ng-template pTemplate="body" let-rowData let-columns="columns">
    <tr>
       <td *ngFor="let col of columns">
             <ng-container *ngIf="col.field === '2'; else other">
                     <i class="fa" 
                      [ngClass]="{'fa-check' : rowData[col.field] =='E' , 'fa-times :rowData[col.field] =='F'  ]}" aria-hidden="true"></i>
              <ng-template #other>
                   {{rowData[col.field]}}
              </ng-template>
        </ng-container>
        </td>
       </tr>
   </ng-template>       

<p-dataTable>

更新了! 🔥🔥

对于 primeng 版本 4,有一个与数据表相关的旧组件,称为 p-dataTable

<p-dataTable *ngIf="!loading && hasEntries"
           [value]="list"
           [(selection)]="selectedRowData"
           (onRowSelect)="onRowSelect($event)"
           [selectionMode]="selectionMode">

<p-column *ngFor="let col of columns" [header]="col.header" [sortable]="true">
    <ng-template pTemplate="body" let-data="rowData">
        <ng-container *ngIf="col.field === '2'; else other">
            <i class="fa"
             [ngClass]="{'fa-check' : data[col.field] =='E' ,'fa-times' : data[col.field] =='F' }" aria-hidden="true"></i>
        </ng-container>
        <ng-template #other>
            {{data[col.field]}}
        </ng-template>
    </ng-template>
</p-column>

<p-dataTable>

👉 demo 🔥🔥

关于javascript - 在 Angular 6+ 中,如何用图标替换 <p-dataTable> 和 <p-column> 标记中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59191081/

相关文章:

javascript - 如何减少重复的javascript代码

javascript - Moment.js - 获取两个生日的年、月、日差异

python - 将文件加载到 2d numpy 数组中的有效方法

javascript - 轮播 - 停止横向滚动

javascript - 将两个 div 组合在一起

java - 将 List<List<String>> 转换为 String[]

arrays - 如何修复 JSON 解析应用程序中的 'Index Out Of Range' 错误

angular - 如何更改 Ionic 4 的 ionic 范围引脚字体和格式?

Angular 2 和 SEO 元标记

angular - 类正在使用 Angular 功能,但没有装饰。请添加一个显式的 Angular 装饰器