【问题标题】:PrimeNG Load DataTable after Filter is applied应用过滤器后 PrimeNG 加载数据表
【发布时间】:2018-02-20 19:33:14
【问题描述】:

我从 API 获取数据,并将其呈现在 p-table

之后,我以编程方式触发表格过滤(默认过滤器)。

我面临的问题是表格在没有过滤器的情况下加载和渲染,并在几毫秒后应用过滤器,并重新渲染表格。

有没有办法获取触发 Prime Table 加载的事件?或者以某种方式延迟它。

模板:

<p-table #tt class="table"[value]="myList">
     ....
     <tr>
       <th>
        <p-dropdown appendTo="body" *ngSwitchCase="'state'" [options]="states"
        (onChange)="tt.filter($event.value, 'state', 'equals')"></p-dropdown>
       </th>
     </tr>
     ....
</p-table>

类:

export class Component implements {
    @ViewChild('tt') tt: DataTable;
    myList: any;

    getList(){
    Promise.resolve(...)
        .then(res => {
                this.myList = res;
                this.tt.filter('created', 'state', 'equals');
              });
            }
     }

【问题讨论】:

  • 嗨..你有解决方案吗?

标签: angular primeng primeng-datatable


【解决方案1】:

这种过滤就像依赖于你的标记,只有当你从 api 调用中获取数据时才会出现标记。

所以最好的决定和正确的执行方法是像编程一样在then回调中对数组进行排序

this.myList = res.sort(yourCustomSortFunction);

据我所知,您需要立即渲染它,所以为什么不在模板渲染之前提前对其进行排序。

【讨论】:

  • 我认为有一个更常见的解决方案。这样做的逻辑很好,但我需要创建自定义排序函数,而不是使用 p-table 中的排序函数。还是谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
相关资源
最近更新 更多