...например...
<div class="month" *ngFor="#item of myCollection; #i = index">
...
</div>
Можно сделать что-то вроде ...
<div class="month" *ngFor="#item of 10; #i = index">
...
</div>
... без обращения к не элегантному решению, как:
<div class="month" *ngFor="#item of ['dummy','dummy','dummy','dummy','dummy',
'dummy','dummy','dummy']; #i = index">
...
</div>
?
Ответы:
Внутри вашего компонента вы можете определить массив чисел (ES6), как описано ниже:
Смотрите эту ссылку для создания массива: кратчайший способ создать массив целых чисел из 1..20 в JavaScript .
Затем вы можете перебрать этот массив с помощью
ngFor
:Или коротко:
источник
Array(5).fill(4)
создать[4,4,4,4,4]
Array.fill()
в Angular 2 Typescript приводит к следующей ошибкеSupplied parameters do not match any signature of call t arget.
- Проверяя документы Array.prototype.fill, он говорит, что требуется 1 аргумент ... developer.mozilla.org/en/docs/Web/JavaScript/Reference/…Array(5).fill(1).map((x, i) => i + 1); /*[1,2,3,4,5]*/
это решает ошибку в TS@OP, вы были очень близки со своим «не элегантным» решением.
Как насчет:
<div class="month" *ngFor="let item of [].constructor(10); let i = index"> ... </div>
Здесь я получаю
Array
конструктор из пустого массива:[].constructor
потому чтоArray
не является распознанным символом в синтаксисе шаблона, и мне лень это делатьArray=Array
илиcounter = Array
в машинописи, как @ pardeep-jain в его 4-м примере. И я называю это без,new
потому чтоnew
это не обязательно для получения массива изArray
конструктора.Array(30)
иnew Array(30)
эквивалентны.Массив будет пустым, но это не имеет значения, потому что вы действительно хотите использовать
i
from;let i = index
в вашем цикле.источник
<li *ngFor="let number of [0,1,2,3,4]">{{number}}</li>
Нет, для NgFor пока нет метода использования чисел вместо коллекций. В настоящее время * ngFor принимает коллекцию только в качестве параметра, но вы можете сделать это следующими способами:
Используя трубу
pipe.ts
Использование массива чисел непосредственно в HTML (Просмотр)
Использование метода Split
Использование создания нового массива в компоненте
Рабочая демонстрация
источник
Array.fill()
метод для создания массива вместо того,res.push()
как показано в ответе Thierrys.push
? Я имею в виду, что оба метода верны, но все же, если есть разница. между ними.Array.fill()
более элегантным, чем цикл, использующий push, и он также, вероятно, более эффективен.counter = Array
очень умным;)Я не мог вынести идею выделения массива для простого повторения компонентов, поэтому я написал структурную директиву. В простейшей форме это не делает индекс доступным для шаблона, это выглядит так:
http://plnkr.co/edit/bzoNuL7w5Ub0H5MdYyFR?p=preview
источник
Я решил это, используя Angular 5.2.6 и TypeScript 2.6.2:
Это может быть использовано в компоненте, как это:
Проверка ошибок и утверждения специально для краткости опущены (например, что происходит, если шаг отрицательный).
источник
<div *ngfor="let i of 4, i++"></div>
может бытьВы также можете использовать это
HTML
источник
Вы можете использовать lodash:
Я не тестировал код, но он должен работать.
источник
<div *ngfor="let i of 4, i++"></div>
может бытьi
или индексировать в коде, то вы можете сделать*ngFor="let i of range; let i = index"
Это также может быть достигнуто следующим образом:
HTML:
Машинопись:
Рабочая Демо
источник
Поскольку метод fill () (упомянутый в принятом ответе) без аргументов выдает ошибку, я бы предложил что-то вроде этого (работает для меня, Angular 7.0.4, Typescript 3.1.6)
В коде компонента:
источник
Это хороший и быстрый способ повторить количество раз в myCollection.
Так что, если myCollection было 5, Hello World будет повторяться 5 раз.
источник
Используя пользовательскую Структурную Директиву с индексом:
Согласно угловой документации:
Когда angular создает шаблон, вызывая createEmbeddedView, он также может передавать контекст, который будет использоваться внутри
ng-template
.Используя необязательный параметр context, вы можете использовать его в компоненте, извлекая его из шаблона так же, как и в * ngFor.
app.component.html:
for.directive.ts:
источник
Пожалуйста, найдите мое динамическое решение, если вы хотите динамически увеличивать размер массива после нажатия кнопки (вот как я дошел до этого вопроса).
Распределение необходимых переменных:
Объявите функцию, которая добавляет элемент в массив:
Вызвать функцию в html
Итерация по массиву с помощью ngFor:
источник
<div *ngfor="let i of 4, i++"></div>
может бытьСамый простой способ, который я пробовал
Вы также можете создать массив в файле компонента и вызвать его с помощью директивы * ngFor, вернув его в виде массива.
Что-то вроде этого ....
И эта функция может быть использована в вашем файле шаблона HTML
источник
<div *ngfor="let i of 4, i++"></div>
может бытьМое решение:
В HTML:
источник