Угловой Как найти количество элементов в ngFor после применения труб перед секцией трубы - PullRequest
0 голосов
/ 14 декабря 2018

В основном я пытаюсь получить длину результата по конвейеру до применения трубы среза, пример кода -

enter image description here

<ng-container *ngFor="let sub of subs | Filter1: { Name1: name1}:true |
  Filter2: { Name2: name2}:true | searchFilter: { mobilenumber: searchText }: false |
  slice: startIndex:endIndex  as result;let i=index;">
    // table code
</ng-container>

возможно липолучить длину, прежде чем данные будут разрезаны. Я пытался получить его "как результат" в ng-контейнере, но я получаю "Ошибка синтаксического анализа шаблона:" у кого-нибудь есть решение?Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Я столкнулся с той же проблемой, и я добился этого с помощью функции и фильтра в .ts

Поиск поля ввода в HTML-файле.

<div class="is-empty">
                <input class="effect-1 form-control ng-pristine ng-valid ng-touched" placeholder="Search" type="text"
                       [(ngModel)]="salesByCountryReportObj.search" (ngModelChange)="getFilteredResults()">
                <span class="focus-border"></span>
                <i class="fa fa-search"></i>
              </div>

, а затем в .ts файл

import {SearchFilterPipe} from "@app/shared/pipes/search-filter.pipe";

@Component({
  selector: 'app-sales-by-country',
  templateUrl: './sales-by-country.component.html',
  styleUrls: ['./sales-by-country.component.scss'],
  providers: [ SearchFilterPipe ]
})

export class SalesByCountryComponent implements OnInit {

constructor(private searchFilter: SearchFilterPipe){}

getFilteredResults() {
let filteredArray = this.searchFilter.transform(this.subs, this.salesByCountryReportObj.search);
console.log(filteredArray.length);
}

}
0 голосов
/ 14 декабря 2018

У меня была такая же проблема несколько дней назад, и я создал еще один div:

<div #count>{{(subs | filter:searchText).length}}</div>
<ng-container *ngFor="let sub of subs | Filter1: { Name1: name1}:true |
  Filter2: { Name2: name2}:true | searchFilter: { mobilenumber: searchText }: false |
  slice: startIndex:endIndex  as result;let i=index;">
    // table code
</ng-container>

В файле .ts:

@ViewChild('count') count: any;
console.log(+(this.count.nativeElement.innerText));

Это может выглядеть как хаки может быть лучшее решение.

...