Angular2 - 使用函数更新NGX-DataTable"表达式发生了变化......"

时间:2017-06-29 16:57:23

标签: angular angular2-template ngx-datatable

我有两张桌子。我的目标是在我的第一个表上按一行按钮,调用一个函数,然后让该函数将该行添加到我的第二个表中。

现在我的代码看起来像这样:

<ngx-datatable
      class='material'
      [rows]='rowsAll'
      ...
>
 <ngx-datatable-column 
   ...
  >
    <ng-template 
      ...
    > 
      <button (click)="addRow(value)">
        Add
      </button>
    </ng-template>
  </ngx-datatable-column>
</ngx-datatable>

<ngx-datatable
      class='material'
      [rows]='rowsSelected'
      ...
>
</ngx-datatable>

addRow(selectedRow){
  // Get row via value
  ...

  // Add Row
  this.rowsSelected.push(selectedRow);
  this.ref.markForCheck();
}

并且它可以工作,但每当我点击偶数行时我都会收到此错误:

&#34;检查后表情发生了变化。上一个值:&quot; datatable-body-row datatable-row-odd&#39;。当前值:&quot; datatable-body-row datatable-row-even&#39;。&#34;

做了一些研究之后,我认为让addRow()更新第二个表会导致更改而不检查更改,这就是为什么我添加了this.ref.markForCheck() - 但这似乎没有做任何更改。所以我仍然迷失了如何解决这个问题。

我是否有正确的方法来更新第二个表的行,或者我应该继续尝试在更新第二个表后手动触发检查,因为我现在正在做什么?或者我只是误解了别的东西?谢谢你的帮助,我很感激!

1 个答案:

答案 0 :(得分:2)

如果重新分配rowsSelected变量而不是推送到数组,则应触发angular的更改检测并更新表。

this.rowsSelected = [...this.rowsSelected, selectedRow];