我正在尝试传递其他字段以帮助进行处理。这是我定义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
?
感谢您的帮助
答案 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的真正含义。