angular - 数组更改时刷新 ng2-smart-table
问题描述
你好,下午好,
ng2-smart-table 的创建者通知我在此处打开帖子而不是电子邮件,因此其他程序员也可以从这个问题中受益。我要做的是在修改用于绑定它的数组时刷新数据表。它背后的 porpuse 是一个过滤器,直接作用于数组,删除元素或添加元素。这是一个简单的例子,说明它现在是如何工作的:
let arr = [];
//fill arr with data
let arrayData = arr;
像这样,它可以工作,因为在 html 中我有 [data]='arrayData'
问题是它原来是一个缓慢的过滤器,我总是用它的所有元素创建表。我已经更改了过滤器的方法,只使用 splice 从数组中添加或删除必要的元素来删除和推送添加,所以我不会每次都重新创建数组并包含所有需要的元素。数组确实发生了变化,并且按预期工作,但问题是修改后的数组对数据表没有影响,它一直显示它的旧状态,就好像数组没有修改一样。我在数据表的 git hub 论坛上遇到了一些解决方案,但它们都不适合我的情况。我相信我在这个项目中有一些不同。我创建了使用数据包的组件,作为通用表,由某些页面使用。我正在应用的过滤器属于特定页面。在那个页面中,
<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
我能做些什么来强制刷新数据表或其他东西?
解决方案
查看 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
推荐阅读
- php - 如何在 Woocommerce 中添加用户元数据作为订单元数据
- tensorflow - 在训练 tensorflow 对象检测 api 时获取 coco 性能指标
- c++ - 在我的测试中,Connect-X 3 RDMA 延迟高于 OFED 延迟测试实用程序
- nginx - NGINX try_files 不接受文件名。无论我做什么,它都会强制尝试打开 $uri
- javascript - 找到特定文本时如何使页面刷新?
- laravel - Laravel8 - Vue3 显示存储中的图像
- list - Scala containsSlice 实现
- python - 如何在 TensorFlow 中训练 3D 数组
- reactjs - Cypress 组件测试、ReactJS 和 TailwindCSS
- ruby-on-rails - Linux mint mate - ruby 3.0.2 - zlib.so 未定义符号:inflateReset