ngx-dataTable 如何应用格式函数

问题描述

数据和 .TS:

export class AppComponent {
  name = "Angular " + VERSION.major;

  public allFruits = [
    { f: 1,detail: "Banana is good for health." },{ f: 2,detail: "It is sweet." }
  ];

  fruitName = fruitS;

  public first10(n: string): string {
    return n.substring(0,10);
  }

  colSpec = [
    { prop: "f",name: "fruit" },// "fruitName[f]" or `${fruitName[f]}` won't work
    { prop: "detail" } // maybe need a pipe?
  ];
}

enum fruitS {
  Apple = 0,Banana,Melon
}

.HTML:

<b>PLAIN</b>
<table>
  <tr *ngFor="let f of allFruits">
    <td>{{fruitName[f.f]}}</td>
    <td>|&nbsp;{{first10(f.detail)}}</td>
  </tr>
</table>

<br>
<b>ngx</b>
<ngx-datatable [rows]="allFruits" [columns]="colSpec">
</ngx-datatable>

请参阅StackBlitz demo

解决方法

有一个非常好的地方可以找到demos of ngx-datatable

需要使用ng-template来应用格式和其他功能:

HTML:

<ngx-datatable 
  [rows]="allFruits" 
  class="material striped" 
  [columnMode]="'force'"  
  >
    <ngx-datatable-column name="f" headerClass="header">
      <ng-template ngx-datatable-cell-template let-rowIndex="rowIndex" 
          let-value="value" let-row="row">
         {{ fruitName[value] }}
      </ng-template>    
      </ngx-datatable-column>

    <ngx-datatable-column name="detail" headerClass="header">
      <ng-template ngx-datatable-cell-template let-rowIndex="rowIndex" 
          let-value="value" let-row="row">
        {{ first10(value)|uppercase }}
      </ng-template>
      </ngx-datatable-column>
</ngx-datatable>

打字稿:

 public allFruits = [
    { f: 0,detail: "Banana is good for health." },{ f: 1,detail: "It is sweet." }
  ];

  fruitName = fruitS;

  public first10(n: string): string {
    return n.substring(0,10);
  }

  public numToString(n: number): string {
    //alert(n);
    return this.fruitName[n];
  }

The example can be seen here.

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...