首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在角自定义搜索管道中添加空状态

如何在角自定义搜索管道中添加空状态
EN

Stack Overflow用户
提问于 2022-02-03 10:33:17
回答 2查看 274关注 0票数 1

我有一个表组件,在这里我使用*ngFor打印数组数据。

代码语言:javascript
复制
  <ng-container *ngFor="let element of array | search: searchInput">
        <tr>
          <td class="body_summary curved-border-table-left">
            <span
              class="count-5"
              [class.update-plugins-second]="element ['status'] === 'unread'"
              [class.update-plugins]="element ['status'] === 'read'"
            ></span>
            <span class="inner_text"> {{ report["title"] }} </span>
          </td>
        </tr>
      </ng-container>

在这里,我写了这样的自定义搜索管道

代码语言:javascript
复制
import { Pipe, PipeTransform } from "@angular/core";
@Pipe({
  name: "search",
})
export class SearchPipe implements PipeTransform {
  transform(reports: string[], searchInput: string): any[] {
    if (!searchInput) {
      return reports;
    }
    searchInput = searchInput.toLowerCase();
    return reports.filter((x: any) =>
      x?.title.toLowerCase().includes(searchInput)
    );
  }
}

在本例中,搜索功能运行良好,但我希望将空状态添加为

代码语言:javascript
复制
<p> No Records Found </p>

当在搜索管道中找不到记录时。

在当前的*ngContainer之后,我应该在哪里为它编写标记,我应该如何做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-03 11:10:28

只需在下面或上面添加类似的内容。

代码语言:javascript
复制
<ng-container *ngIf="(array | search: searchInput).lengt === 0">
  No results
</ng-container>
票数 0
EN

Stack Overflow用户

发布于 2022-02-03 11:13:53

当数组中的任何元素都不满足条件时,JS Array#filter函数返回一个空数组。因此,您可以使用pipe*ngIf封装在外部级别,并检查返回数组的长度。0的数值在Javascript中是无效的,因此当数组的长度为0时,else块将被呈现。

同时,看到CSS选择器update-plugins-secondupdate-plugins基于status属性的值是相互排斥的,它可以使用ngClass指令重写。

代码语言:javascript
复制
<ng-container *ngIf="(array | search: searchInput) as searchResults">
  <ng-container *ngIf="searchResults.length; else noResults">
    <tr *ngFor="let element of searchResults">
      <td class="body_summary curved-border-table-left">
        <span
          class="count-5"
          *ngClass="{
            'unread': 'update-plugins-second',
            'read': 'update-plugins'
          }[element['status']]"
        ></span>
        <span class="inner_text"> {{ report["title"] }} </span>
      </td>
    </tr>
  </ng-container>
  <ng-template #noResults>
    <p> No Records Found </p>
  </ng-template>
</ng-container>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70969704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档