Подтвердить что ты не робот

Angular 2: Как написать цикл for, а не цикл foreach

Используя Angular 2, я хочу дублировать строку в шаблоне несколько раз. Итерация по объекту проста, *ngFor="#object of objects". Тем не менее, я хочу запустить простой цикл for, а не цикл foreach. Что-то вроде (псевдокод):

{for i = 0; i < 5; i++}
  <li>Something</li>
{endfor}

Как мне это сделать?

4b9b3361

Ответ 1

Обновление

NgFor API устарел, используйте его с комбинацией директивы ngForOf с ng-template.

<ul>
    <ng-template ngFor let-item [ngForOf]="createRange(5)" let-currentElementIndex="(index + 1)" [ngForTrackBy]="trackByFn">
      {{currentElementIndex}} Something
    </ng-template>
</ul>

Демо здесь


Вы можете динамически генерировать массив любого времени, которое вы хотели бы сделать <li>Something</li>, а затем сделать ngFor над этой коллекцией. Также вы можете использовать index текущего элемента.

Разметка

<ul>
   <li *ngFor="let item of createRange(5); let currentElementIndex=index+1">
      {{currentElementIndex}} Something
   </li>
</ul>

код

createRange(number){
  var items: number[] = [];
  for(var i = 1; i <= number; i++){
     items.push(i);
  }
  return items;
}

Демо здесь

Ответ 2

Вы можете сделать оба в одном, если вы используете index

<div *ngFor="let item of items; let myIndex = index>
  {{myIndex}}
</div>

С этим вы можете получить лучшее из обоих миров.

Ответ 3

Вы можете создать пустой массив с заданным количеством записей, если передать конструктор int в конструктор Array, а затем перебрать его через ngFor.

В коде компонента:

export class ForLoop {
  fakeArray = new Array(12);
}

В шаблоне

<ul>
  <li *ngFor="let a of fakeArray; let index = index">Something {{ index }}</li>
</ul>

Свойства индекса дают вам номер итерации.

Текущая версия

Ответ 4

В зависимости от длины запрошенного цикла возможно даже более "управляемое шаблонами" решение:

<ul>
  <li *ngFor="let index of [0,1,2,3,4,5]">
    {{ index }}
  </li>
</ul>

Ответ 5

Лучший способ сделать это - создать поддельный массив в компоненте:

В компоненте:
fakeArray = new Array(12);

InTemplate:

<ng-container *ngFor = "let n of fakeArray"> MyCONTENT </ng-container>

Plunkr здесь