【问题标题】:Angular "let-col" is not passing all the propertiesAngular“let-col”没有传递所有属性
【发布时间】:2019-09-22 14:14:44
【问题描述】:

我正在尝试传递额外的字段来帮助处理。这就是我定义列数组的方式:

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 没有通过有什么原因吗?

感谢您的帮助

【问题讨论】:

  • 你添加了标签吗?
  • @EhsanKiani 当我将代码粘贴到她时它被隐藏了。我修好了它。谢谢
  • 从 ng-template 中移除 let-col。
  • @FatemeFazli。有效。现在我想明白了。 let-collet col of.. 不同吗?我对let- 中可以定义的内容有点困惑。
  • 当您定义 let-col 时,它会创建一个新变量,该变量引用具有字段属性的表 col,并且它不引用在 ngFor 中定义的 col 变量,它具有字段属性但没有isMultiRowColumn 属性,因此请尝试将 ngfor 变量从 col 更改为 column。

标签: angular primeng-datatable


【解决方案1】:

通过 let-col,上下文属性 $implicit 在模板中作为 col 用于绑定。并且您在ngfor 中选择了与let-col 相同的col var,当您定义let-col 时,它会创建一个新var,该var 引用具有字段属性的表col,并且它不引用您在中定义的col 变量ngFor,它有字段属性但没有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 的真正含义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-24
    • 2017-06-20
    • 1970-01-01
    • 2018-11-26
    • 2019-02-09
    • 2023-04-05
    • 1970-01-01
    • 2017-07-12
    相关资源
    最近更新 更多