数组更改时刷新ng2-smart-table

时间:2019-06-04 16:58:49

标签: angular ng2-smart-table

你好,下午好,

ng2-smart-table的创建者已通知我,在此处而不是通过电子邮件发送帖子,因此其他程序员也可以从此问题中受益。我正在尝试做的是在修改用于绑定数据的数组时刷新数据表。它背后的过滤器是一个直接作用于数组,删除元素或添加元素的过滤器。这是它现在如何工作的简单示例:

let arr = [];
//fill arr with data
let arrayData = arr;

就像这样,它可以工作,因为在html中我有[data] ='arrayData'

问题在于,事实证明这是一个缓慢的过滤器,我总是创建带有所有元素的表。我已经更改了过滤器的方法,以使用splice删除并推送添加来从数组中添加或删除数组中的必要元素,因此我不会每次都用所有需要的元素来重新创建数组。数组确实发生了更改,并且可以按预期工作,但是问题在于,修改后的数组对数据表没有影响,它一直显示其旧状态,就好像该数组没有修改一样。 我在数据表的git hub论坛上遇到了一些解决方案,但是它们都不适合我的情况。 我相信我在这个项目上有一些不同。我创建了一个组件,该组件使用数据包作为某些页面使用的通用表。我正在应用的过滤器属于特定页面。在该页面中,我的HTML中有类似的内容:

<app-datatable id="tableSpecific" class="last-fixed" [(columns)]="columns" [data]="arrayData"[paging]='false' (emmitClick)="apply($event.data)"></app-datatable>

app-datatable组件具有以下HMLT:

<ng2-smart-table [settings]="config" [source]="data" (userRowSelect)="clickEmmiter($event)"></ng2-smart-table>

因此,修改数组的过滤器的实现在另一个页面上。竞标这两个唯一的东西是

[data]= array 

我该怎么做以强制刷新数据表或在数据表上进行某些操作?

1 个答案:

答案 0 :(得分:1)

看看ng2-smart,没有办法知道您已经在外部更新了数组,只有办法是传入一个新数组,您可以这样做

arrayData = [...arrayData];

ng2-smart-table有一个包装器类,您可以利用该类来更新数组。

import { LocalDataSource } from 'ng2-smart-table';

您可以使用将数组传递给该包装器,并使用其功能来操作数组,并检查代码https://github.com/akveo/ng2-smart-table/blob/master/src/ng2-smart-table/lib/data-source/local/local.data-source.ts

它具有添加,添加,删除等功能。

关于如何将数组传递到LocalDataSource包装器的示例用法 https://akveo.github.io/ng2-smart-table/#/examples/using-filters

相关问题