Angular 在priming中动态生成colulmns时获取datatable行

Angular 在priming中动态生成colulmns时获取datatable行,angular,primeng,Angular,Primeng,我正在使用PrimingDataTable并动态生成列。我想调用方法getRowMarking(data[col.field])并向其传递一行,但它不是这样工作的。创建动态列时是否可以获得一行?原因数据[col.field]不起作用 简单数据表: <p-dataTable [value]="data" scrollable="true" sortMode="multiple" editable="true"> <p-column *ngFor="let col of

我正在使用PrimingDataTable并动态生成列。我想调用方法
getRowMarking(data[col.field])
并向其传递一行,但它不是这样工作的。创建动态列时是否可以获得一行?原因
数据[col.field]
不起作用

简单数据表:

 <p-dataTable [value]="data" scrollable="true" sortMode="multiple" editable="true">
    <p-column *ngFor="let col of header" [filter]="true" [sortable]="true" [editable]="col.editable" [style]="{'width':'150px'}"
      [field]="col.field" [header]="col.field" [ngStyle]="getRowMarking(data[col.field])"></p-column>
  </p-dataTable>

如果您想从每列访问整行,以下是如何使用模板实现这一点:

<p-dataTable [value]="data" scrollable="true" sortMode="multiple" editable="true">
  <p-column *ngFor="let col of cols" [field]="col.field" [header]="col.header">
    <ng-template let-row="rowData" let-i="rowIndex" pTemplate="body">
      <span [ngStyle]="getRowMarking(col.field, row)">
        {{row[col.field]}}
      </span>
    </ng-template>
  </p-column>
</p-dataTable>


这就是你想要的吗?

不错,但我意识到通过方法设置样式不是一个好方法,因为每次html状态更改时都会调用它。
getRowMarking(col, row) {
    if(col==='year') {
      if(row.year<=2010) {
        return {'color':'red'};
      }
      return {'color':'green'};
    }
    else if(col==='color') {
      return {'color':row.color};
    }
  }