循环遍历列表并根据 Angular 中的奇数或偶数插入 html 个元素

Loop through a list and insert html elements depending on Odd or Even in Angular

我是 Angular 的新手,我正在尝试了解如何遍历列表

假设我有一个类似于英雄之旅教程中的列表。 https://angular.io/tutorial/toh-pt2

    export const HEROES: Hero[] = [
  { id: 11, name: 'Mr. Nice' },
  { id: 12, name: 'Narco' },
  { id: 13, name: 'Bombasto' },
  { id: 14, name: 'Celeritas' },
  { id: 15, name: 'Magneta' }      
];

我使用 Bulma 进行样式设置,并希望将英雄列表插入到具有两列 pr 行的列中。 https://bulma.io/documentation/columns/basics/

最终结果看起来像这样。

     <div class="container">
          <div class="columns">
             <div class="column">
                11 Mr. Nice
             </div>
            <div class="column">
                12 Narco
            </div>
          </div>
          <div class="columns">
             <div class="column">
                13 Bombasto
             </div>
            <div class="column">
                14 Celeritas
            </div>
          </div>
          <div class="columns">
             <div class="column">
                15 Magneta
             </div>
            <div class="column">
            </div>
          </div>
        </div>

有一些关于第一个、最后一个、偶数和奇数等值的文档 https://angular.io/api/common/NgForOf

但我不知道如何使用它们。因为如果元素 i Odd 那么我将不得不添加起始元素 <div class="columns"> 如果它是 Even 我将不得不添加关闭元素,当然还有列表包含奇数个元素的特殊情况,那么我将不得不添加一个空的 <div class="column"></div>

它也可以用 first, last, even & odd 制作,但最佳方法是能够实现你的 html 标签,这样你就可以使用 *ngFor whitout first, last, even & odd.

解决方法: 由于上面提到的文件结构,我建议你将数组分块在组件中。

尝试:

export const HEROES: Hero[] = [
 { id: 11, name: 'Mr. Nice' },
 { id: 12, name: 'Narco' },
 { id: 13, name: 'Bombasto' },
 { id: 14, name: 'Celeritas' },
 { id: 15, name: 'Magneta' }      
];
HEROES = chunkArray(HEROES, 2);

function chunkArray(array, chunkSize) {
    return Array(Math.ceil(array.length / chunk_size)).fill().map((_, index) 
           => index * chunk_size).map(begin => array.slice(begin, begin + 
           chunk_size))
}

现在英雄是:

[
 [{"id":11,"name":"Mr. Nice"},{"id":12,"name":"Narco"}], 
 [{"id":13,"name":"Bombasto"},{"id":14,"name":"Celeritas"}], 
 [{"id":15,"name":"Magneta"}]
]

尝试 html: