如何获取过滤列表中的多个项目?

Iva*_*lov 1 filtering pipe angular

因此,我有一个过滤管道并使用它来过滤城市列表以仅显示那些包含搜索词的城市。

import {Pipe, PipeTransform} from '@angular/core';

    @Pipe({ name: 'filter' })
    export class FilterPipe implements PipeTransform{
        transform(value: any, arg: string) {
            var searchTerm = arg ? arg : '';
            searchTerm = searchTerm.toUpperCase();
            if (value == null) return null;
            return value.filter(el => el.City.toUpperCase().indexOf(searchTerm) !== -1);
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是我拥有的城市数组中有 5000 个项目,所以我使用切片管只显示其中的五个。

<form [formGroup]="form">
  <input formControlName="search" type="text">
  <div>
    <li 
    *ngFor="let city of cities | filter:searchTerm | slice:0:5"
    (click)="PasteCity(city.City)">
      {{ city.City }}
    </li>
  </div>
</form>
Run Code Online (Sandbox Code Playgroud)

但是有一个问题。我需要向用户显示找到了多少个城市,例如“显示了 5 0f 631 个城市”。据我尝试,ViewChildren索引*ngFor方法的最后一个元素只会让我得到显示的城市数量,而不是过滤器找到的......但是在尝试使用时ViewChildren我遇到了一个错误并很快就把这个想法

ber*_*ben 5

你试过了吗

(cities | filter:searchTerm).length 
Run Code Online (Sandbox Code Playgroud)

?