2017-06-13 10 views
5

Mam następujący szablon:uzyskać długość tablicy w ngFor rur po transformacji

<div *ngFor="let item of myArray | customPipe1 | customPipe2; let l = length"> 
    Here is the length of my ngFor : {{l}} 
</div> 

Niestety długość nie istnieje w ngFor. Jak mogę obejść ten problem, aby mieć dostępną długość wewnątrz mojego ngFor?

+0

Ty już masz 'myArray.length' Nie rozumiem problemu – echonax

+0

To zależy co chcesz go, można dać więcej kontekstu ? Możesz zobaczyć, co jest dostępne z 'ngFor' w dokumentach: https://angular.io/api/common/NgForOf – jonrsharpe

+1

@echonax długość może się zmienić za pomocą rur. Na przykład funkcja filtra :) – PierreDuc

Odpowiedz

9
<div *ngFor="let item of myArray | customPipe1 | customPipe2 as result"> 
    Here is the length of my ngFor : {{result.length}} 
</div> 

Patrz również https://angular.io/api/common/NgForOf

+0

@Igor thanks - naprawiono –

+1

Od premiery ostatniej wersji Angular 2 spodziewałem się, że to zadziała i dodałem odpowiedź od dawna: D [tutaj] (https://stackoverflow.com/a/39476552/2435473), +1 dla link –

+2

Jak mogę uzyskać długość poza ngFor? – Luckylooke

8

Innym rozwiązaniem mogłoby być następujące

<div *ngFor="let item of myArray | customPipe1 | customPipe2; let l = count"> 
    Here is the length of my ngFor : {{l}} 
</div> 

Plunker Example

Patrz także

+0

Ładne złapanie: D https://github.com/angular/angular/blob/master/packages/common/src/directives/ng_for_of_ts.LT #L21 – echonax

+1

@echonax Tak, to jest :) https://github.com /angular/angular/blob/master/packages/common/src/directives/ng_for_of.ts#L17 – yurzui

-1

Cóż, to nie jest dobrze udokumentowana w kątowym doc, można znaleźć pod kodem źródłowym kątowa w -

https://github.com/angular/angular/blob/master/packages/common/src/directives/ng_for_of.ts

* ngFor akceptuje Ilość params.

constructor(public $implicit: T, public ngForOf: NgIterable<T>, public index: number,public count: number) { 
} 

Więc możemy uzyskać zliczania podobnego -

<div *ngFor="let item of items | pipe; let l = count"> 
<div>{{count}}</div> 
</div> 
Powiązane problemy