微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular 9异步管道和搜索过滤器

如何解决Angular 9异步管道和搜索过滤器

<input 
  type="text" 
  class="form-control" 
  id="search-text" 
  [(ngModel)]="searchText" 
  placeholder="Enter text to search"
  autofocus
>
<div class="dropdown-divider m-0"></div>

<ul class="list-group list-group-flush" *ngIf="users$ | async as users">
  <li class="list-group-item d-flex justify-content-between align-items-center card-body__headings">
    <span class="float-left">{{(users$| async)?.length}} users</span>
  </li>

  <li 
    class="list-group-item d-flex justify-content-between align-items-center" 
    routerLink="userdetail"
    *ngFor="let user of users | search: searchText "
  >
    +++{{user | json}}
    <span class="float-left w-100">
              <p class="user-initial">{{user.NAME_INITIALS }}</p>
              <em class="list-group-item__detail">
                {{user.FirsTNAME}} {{user.LASTNAME}}
                <br/>
                <em class="list-group-item__email">{{user.EMAIL}}</em>
              </em>
            </span>

    <span class="badge">
      <ish-icon icon="user.remove" cssClass="action-icon"></ish-icon>
     </span>
  </li>
</ul>

其中搜索是用于过滤数据的管道。当我在过滤器中检查时,它会向我返回正确的搜索结果,但未在UI上呈现。表示搜索结果未呈现。

解决方法

搜索了这么长时间后就得到了答案。

HTML

<ul class="list-group list-group-flush" *ngIf="users$ | async as users">
      <li class="list-group-item d-flex justify-content-between align-items-center card-body__headings">
        <span class="float-left">{{(users$| async)?.length}} users</span>
      </li>

      <li class="list-group-item d-flex justify-content-between align-items-center" routerLink="userdetail"
        *ngFor="let user of users | search: 'FIRSTNAME,LASTNAME,EMAIL': searchText ">

        <span class="float-left w-100">
          <p class="user-initial">{{user.NAME_INITIALS }}</p>

          <em class="list-group-item__detail">
            {{user.FIRSTNAME}} {{user.LASTNAME}}<br />
            <em class="list-group-item__email">{{user.EMAIL}}</em>
          </em>
        </span>

        <span class="badge">
          <ish-icon icon="user.remove" cssClass="action-icon"></ish-icon>
        </span>
      </li>
    </ul>

搜索管道

public transform(value,keys: string,term: string) {

if (!term) return value;
return (value || []).filter(item => keys.split(',').some(key => item.hasOwnProperty(key) && new RegExp(term,'gi').test(item[key])));

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。