primeng 中的延迟加载 table

Lazy loading in primeng table

我有一个带有 p-dropdown 和 p-table 的组件。当我在下拉列表中选择项目时,我想在这个组件的 p-table 中延迟加载数据。可能吗?当我尝试时,我只对 init 整个组件进行延迟加载。

https://stackblitz.com/edit/primeng-tablelazy-demo-lwb4no?file=src%2Fapp%2Fapp.component.ts

您提供的示例有两个问题:

  1. 抛出错误,因为您的 event 参数 onChange 函数未定义。 要解决此问题,您需要像这样调用模板中的函数:
<p-dropdown
  [options]="['customers_a', 'customers_b', 'customers_c']"
  (onChange)="onChange($event)"
></p-dropdown>

(注意参数名称中的美元符号。您可以在 docs 中找到更多相关信息)

  1. 您没有向 loadCustomers 方法提供延迟加载事件。相反,您从没有所需属性的下拉列表中传递事件。

所以不要像这样调用 loadCustomers 方法:

    this.loadCustomers(event, this.selectedCustomers);

您可以在 table 上调用 reset 方法或从 table 手动获取 lazyLoad 元数据。 为此,您需要在组件 class 中引用 table。 这可以用 ViewChield 装饰器存档。

选项 1:

  @ViewChild(Table)
  table: Table;

  onChange(event) {
    this.selectedCustomers = event.value;
    this.table.reset()
  }

选项 2:

  @ViewChild(Table)
  table: Table;

  onChange(event) {
    this.selectedCustomers = event.value;
    this.loadCustomers(this.table.createLazyLoadMetadata(), this.selectedCustomers)
  }