角“ let-col”未传递所有属性

时间:2019-05-04 05:46:40

标签: angular primeng-datatable

我正在尝试传递其他字段以帮助进行处理。这是我定义columns数组的方式:

this.columns = [
        {field: 'vin', header: 'Vin', isMultiRowColumn: true },
        {field: 'year', header: 'Year', isMultiRowColumn: false},
        {field: 'brand', header: 'Brand', isMultiRowColumn: false},
        {field: 'color', header: 'Color', isMultiRowColumn: false}
    ];

现在,当我运行以下代码时:

<p-dataTable [value]="testData">
  <p-column *ngFor="let col of columns" [field]="col.field" [header]="col.header">
    <ng-template let-col let-dt="rowData" pTemplate="body">
     <span>{{dt[col.field] + '-' + col.isMultiRowColumn }}</span>
    </ng-template>
  </p-column>
</p-dataTable>

我得到这个:

dsad231ff-undefined 2012-undefined  VW-undefined    Orange-undefined

是否有任何原因未通过isMultiRowColumn

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

通过let-col,上下文属性$ implicit可以在绑定模板中作为col使用。并且您在ngfor中选择了与let-col相同的col var,当您定义let-col时,它将创建一个新的var,该var引用具有字段属性的表col,但不引用您的col变量在ngFor中定义的属性,它具有field属性,但没有isMultiRowColumn属性,因此,请尝试将ngfor变量从col更改为column之类的内容:

还要检查: What is let-* in Angular 2 templates?

<p-dataTable [value]="testData">
  <p-column *ngFor="let column of columns" [field]="column.field" [header]="column.header">
    <ng-template let-col let-dt="rowData" pTemplate="body">
     <span>{{dt[column.field] + '-' + column.isMultiRowColumn }}</span>
    </ng-template>
  </p-column>
</p-dataTable>

请参阅DEMO,然后单击按钮,然后在浏览器中检查日志,以查看col的真正含义。