Primeng Datatable 4.3:未填充数组更改

时间:2019-08-27 09:17:10

标签: angular typescript primeng primeng-datatable

我正在使用primeng 4.3

我已经编码了这个原始数据表:

<p-dataTable [value]="quotes" [editable]="true">
  <p-column *ngFor="let col of cols" [field]="col.field 
    [header]="col.header" [editable]="col.editable">
    <ng-template let-col let-quote="rowData" pTemplate="editor">
      <p-spinner size="30" [(ngModel)]="quote[col.field]" name="quote"</p-spinner>
    </ng-template>
  </p-column>
</p-dataTable>

this.quotes更改时出现问题。我的意思是,当在this.quotes上填充新数组时,数据表不会填充更改。

为了确保已填充新数组,我正在使用:

this.quotes = Object.assign([], calculatedQuotes);

因此,我的意思是,每次分配this.quotes时,它都有一个对新数组的新引用。

有什么想法吗?

我正在使用primeng 4.3

1 个答案:

答案 0 :(得分:1)

As PRIMENG doc says:

  

变更检测表可能需要了解其值的变化   在某些情况下,例如重新申请排序。为了性能,这   仅当值的引用更改为setter时才执行   用于代替ngDoCheck / IterableDiffers可以减少   性能。因此,当您操纵值时,例如删除或   添加项目,而不是使用诸如push,splice之类的数组方法   使用传播算子或类似方法创建新的数组引用。

所以您可以正确查看表格中的更改:

this.quotes = Object.assign([], calculatedQuotes);

要将新项目添加到网格中,可以使用传播运算符:

this.quotes = [...this.quotes , newObject];