【问题标题】:Add Search filter on table in angular 5在角度 5 的表格上添加搜索过滤器
【发布时间】:2018-04-08 13:00:17
【问题描述】:

我正在使用 Angular 5 打字稿。我想在我的表中添加搜索过滤器。我正在从 Firestore 中检索活动集合:

 this.activities = this.afs.collection('activities').valueChanges();

并使用 ngFor 以 boostrap 表的形式显示字段。

  <table class="table">
        <thead>
          <tr>
            <th>Section</th>
           <th>Name</th>
           <th>Max Players</th>
           <th >Locked</th>
          </tr>
        </thead>
        <tbody>
          <tr *ngFor="let activity of activities | async >

                   <td>
                     {{activity.section}}

                   </td>
                   <td >
                     {{activity.name}}
                   </td>
                   <td>
                   {{activity.maxPlayers}}
                 </td>

                   <td>
                     {{activity.locked}}
                   </td>
              </tr>
           </table>

现在我想添加过滤搜索。我怎样才能做到这一点?我看到了一些关于数据过滤的教程,但它们适用于数组,但我的收集活动没有任何数组。

【问题讨论】:

  • 我猜activities 是一个发出数组的Observable,对吗?
  • 也许你可以给我们看一下代码。作为 user18... 猜测您可能正在使用 Observable。
  • 是的,活动是可观察的。是的,我可以和你分享代码,但是如何分享呢?

标签: angular html-table google-cloud-firestore angularfire2


【解决方案1】:

我写了一个非常简单易用的库ss-search

在您的情况下,您将执行以下操作:

search(await activities, ["section", "name", "maxPlayers", "locked"], "SEARCH_TERM")

这将过滤掉数据,只返回包含您的搜索词的结果。

【讨论】:

    【解决方案2】:

    首先有几点:

    1. &lt;/tbody&gt; 丢失。

    2. in *ngFor " 的末尾缺少。

    3. ngFor 仅适用于数组,不适用于对象,因此 this.activites 必须是数组,否则会出现相同的错误。

    【讨论】:

    • 嗯,活动正在通过async 传输,所以我猜它是Observable,而不是数组,尽管它很可能是一个发出数组的Observable
    • 代码中还有很多其他的东西,所以我只是复制了那部分作为我的问题并粘贴到这里。所以可能会有一些代码丢失。我将活动定义为 activities: Observable;
    猜你喜欢
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2023-02-08
    相关资源
    最近更新 更多