【问题标题】:Filter items in ng-for by search and show categories for those with results通过搜索过滤 ng-for 中的项目并为有结果的项目显示类别
【发布时间】:2020-08-13 23:50:00
【问题描述】:

我创建了一个应用程序来显示来自 JSON 的元素。 我在一个大数组中有 1500 多个项目,还有一个包含按类别排序的项目的数组。

const fullDataSet = [{name: 'Foo', category: 'vegetable'}, {name: 'Bar', category: 'fruit'}];

const = sortedByCategory = [
[{name: 'Foo', category: 'vegetable'}, {name: 'FooBis', category: 'vegetable'}],
[{name: 'Bar', category: 'fruit'}, {name: 'Baz', category: 'fruit'}]
];

我已经实现了一个过滤器来按每个项目中的属性进行搜索,它在我的 *ngFor 上运行。

问题是我还需要按类别对项目进行排序,每个类别都有一个标题。

我现在有 2 个循环,一个用于 sortedByCategory 数组中的每个类别,一个用于一个类别中的每个项目。

问题是,如果我过滤的结果是空的,类别名称还在。

如何构造我的代码,以便仅当嵌套的 ngFor 循环在过滤器之后有元素时才会出现类别名称? 嵌套循环和过滤器的想法是必要的,还是可以以更高效的方式实现?

【问题讨论】:

  • 你可以在应用here看到问题,如果你搜索一个随机字符串,所有的类别名称都还在。我尝试将主题传递给过滤器,但它似乎效果不佳,我想知道是否可能我的方向不正确。

标签: angular angular10


【解决方案1】:

我已经很久没有使用 Angular 了,但这是我的想法,语法可能是混乱的 :D

<div *ngFor="let item of categories">
     <Category *ngIf="item.length>0" data={{item}}/>
</div>

在您的类别组件中:

<div *ngFor="let item of items">
     <p>{{item.name}}</p>
</div>

【讨论】:

  • 不幸的是,它并没有解决获取过滤项目长度的问题:/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 2017-02-11
  • 1970-01-01
  • 2019-06-07
  • 2012-08-10
  • 1970-01-01
相关资源
最近更新 更多