Angular2 ngFor как подсчитать количество значений цикла?

Я использую ngFor для цикла 8 объектов json, и я хочу не только зациклить значения, но и подсчитать количество значений цикла и отобразить число.

например, если значение json

Content:{
0:"Content1",
1:"Content2",
2:"Content3",
3:"Content4",
4:"Content5",
5:"Content6",
6:"Content7",
7:"Content8"
}

Я не только хочу отображать циклические значения "содержимого", но и хочу их подсчитать, чтобы результат мог быть ниже.

1 <- counting
Content1

2
Content2

3
Content3

4
Content4

5
Content5

6
Content6

7
Content7

8
Content8

2 ответов


итерация по массиву

относительно документов: https://angular.io/guide/structural-directives#inside-ngfor и https://angular.io/api/common/NgForOf

скажем, у вас есть iterable:

let content = [
  "Content1",
  "Content2",
  "Content3",
  "Content4",
  "Content5",
  "Content6",
  "Content7",
  "Content8"
]

затем вы можете перебирать и считать с:

<li *ngFor="let item of content; let i = index">
    {{i+1}} {{item}}
</li>

итерация по свойствам объекта

если вы хотите перебирать объект, а не массив объектов, проверьте как перебрать ключи объектов с помощью *ngFor

для записи вам нужна пользовательская труба:

@Pipe({ name: 'keys',  pure: false })
export class KeysPipe implements PipeTransform {
    transform(value: any, args: any[] = null): any {
        return Object.keys(value)//.map(key => value[key]);
    }
}

так это будет

<li *ngFor="let key of objs | keys; let i = index"> ...

обновление

из Angular 6.1+ вы можете использовать native KeyValuePipe.

https://blog.angular.io/angular-v6-1-now-available-typescript-2-9-scroll-positioning-and-more-9f1c03007bb6#ff4b

https://angular.io/api/common/KeyValuePipe

для запись:

<li *ngFor="let item of data | keyvalue; let i = index">
  {{i+1}}. {{item.key}} - {{item.value}}
</li>

демо

<ul>
  <li *ngFor="let item of items; let i = index">
    {{i}}. {{item}}
  </li>
</ul>
{{items ? items.length : ''}}

вы можете просто распечатать длину массива элементов.