【问题标题】:How can I split data which printed using ngfor to 3 columns in angular?如何将使用 ngfor 打印的数据拆分为 3 列角度?
【发布时间】:2019-01-07 09:03:20
【问题描述】:

数据

const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30];

我想将该数据拆分为 3 列,并希望如下所示:

<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    ...
    <li>10</li>
</ul>
<ul>
    <li>11</li>
    <li>12</li>
    <li>13</li>
    ...
    <li>20</li>
</ul>
<ul>
    <li>21</li>
    <li>22</li>
    <li>23</li>
    ...
    <li>30</li>
</ul>

使用 ngfor 时如何拆分数据?

<ul *ngFor="let item of arr">
    <li>{{item}}</li>
</ul>

【问题讨论】:

  • arr拆分成3个数组块

标签: javascript angular split html-lists ngfor


【解决方案1】:

首先应该是这样的:

<ul>
    <li *ngFor="let item of arr">{{item}}</li>
</ul>

并将其添加到您的 CSS 中:

ul{
    -webkit-columns: 3;
    -moz-columns: 3;
    columns: 3;
}

【讨论】:

  • 这是一个不错的解决方案
  • 当你有例如div 并且您不希望它们破坏只需使用 css 样式:break-inside:避免;
【解决方案2】:
function chunkArray(myArray, chunk_size){
    var results = [];

    while (myArray.length) {
        results.push(myArray.splice(0, chunk_size));
    }    
    return results;
}

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30];

// Split in group of 3 items
arr = chunkArray(arr, 3);

在 HTML 中添加嵌套的 *ngFor

<ul *ngFor="let chunckedArr of arr">
    <li *ngFor="let item of chunckedArr">{{item}}</li>
</ul>

【讨论】:

    【解决方案3】:

    您可以使用slice

    <ul>
      <li *ngFor="let item of arr.slice(0,10)">{{item}}</li>
    </ul>
    
    <ul>
      <li *ngFor="let item of arr.slice(10,20)">{{item}}</li>
    </ul>
    
    <ul>
     <li *ngFor="let item of arr.slice(20,30)>{{item}}</li>
    </ul>
    

    【讨论】:

    • 索引可能是动态的
    • @azad 如果是这样,op 应该澄清他想要什么
    【解决方案4】:
    name = 'Angular';
    objectKeys = Object.keys;
    arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30];
    arr2 = { 0 : 10, 10 : 20, 20 : 30};
    
    
    <ul *ngFor="let key of objectKeys(arr2)">
        <ng-container *ngFor="let item of arr" >
            <li *ngIf="item > key && item <= arr2[key]" >{{item}}</li>
        </ng-container>
    </ul>
    

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多