javascript - 管道数据过滤中的 Angular ngFor ngIF 条件

标签 javascript angular pipe ngfor

ngFor 基于使用管道的搜索进行过滤 - 这工作正常,

现在我必须根据搜索查询添加 ngIf 条件

如果没有结果,那么我必须显示另一个带有“无数据”文本的新 div

<input type="text" [(ngModel)]="queryString" placeholder="Search to type">

<li *ngFor="let project of projects | FilterPipe: queryString ;>
{{project.project_name}} 
</li>

//管道

transform(value: any, input:any ): any {
    if(input){
      input = input.toLowerCase();
      return value.filter(function (el: any) {
        return el.project_name.toLowerCase().indexOf(input) > -1;
      })
    }
    return value;
  }

最佳答案

要在模板中使用 filter 管道的结果,您可以在 as 关键字的帮助下创建一个局部变量。

<li *ngFor="let project of (projects | FilterPipe: queryString) as results">
  {{project.project_name}} 
</li>

现在您可以在 results 变量中访问过滤器管道的结果。但是这个局部变量的范围现在仅限于托管 HTML 元素及其子元素。我们可以通过稍微重写您的代码来解决这个问题。

<ul *ngIf="(projects | FilterPipe: searchQuery) as results">
  <li *ngFor="let project of results">
    {{project.project_name}} 
  </li>
  <span *ngIf="results.length === 0">No data</span>
</ul>

这样我们就扩展了 results 变量的范围,我们可以很容易地使用它在过滤后的数据集为空时显示 No Data

这是关于 StackBlitz 的工作示例.

关于javascript - 管道数据过滤中的 Angular ngFor ngIF 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57285679/

相关文章:

javascript - 当我使用 document.getElementById (Jest+Enzyme) 时, react 测试失败

javascript - 如何将值从经典的 asp 传递到 javascript

angular - 尝试绑定(bind)到 dx-date-box 时,类型 'string | number | Date' 无法分配给类型 'Date'

java - Spring Boot + Angular 5 - http.post 空值

javascript - 安装模块,无需原始 npm 安装

fork 后子进程永远不会执行

javascript - 如何使用 ng-click 调用多个函数/链接调用

php - Jquery:选中或取消选中复选框时无法显示加载相应页面

c++ - 管道输入到一个已经运行的 cpp 程序?

c - 在 C 中逐行读取管道