首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angular 7迭代表

Angular 7迭代表
EN

Stack Overflow用户
提问于 2019-05-10 00:39:46
回答 2查看 3.5K关注 0票数 1

我想用一个属性来迭代表,但是在一行中有4个td,并且继续这样直到最后……

我想要这样:

代码语言:javascript
复制
<table>
      <tr>
        <td>
          <mat-checkbox>1</mat-checkbox>
        </td>
        <td>
          <mat-checkbox>2</mat-checkbox>
        </td>
        <td>
          <mat-checkbox>3</mat-checkbox>
        </td>
        <td>
          <mat-checkbox>4</mat-checkbox>
        </td>
      </tr>
      <tr>
        <td>
          <mat-checkbox>5</mat-checkbox>
        </td>
        <td>
          <mat-checkbox>6</mat-checkbox>
        </td>
        <td>
          <mat-checkbox>7</mat-checkbox>
        </td>
      </tr>
    </table>

我试过这样做,但在一个专栏中都是这样:

代码语言:javascript
复制
lista = [
    { value: "1" },
    { value: "2" },
    { value: "3" },
    { value: "4" },
    { value: "5" },
    { value: "6" },
    { value: "7" },
代码语言:javascript
复制
<table *ngFor="let list of lista">
   <tr>
     <td>
       <mat-checkbox>{{ list.value }}</mat-checkbox>
     </td>
   </tr>
</table>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-10 00:53:39

您需要首先将数组分组为4 (块大小),然后在模板中简单地对其进行迭代。

在您的组件中:

代码语言:javascript
复制
const lista = [
    { value: "1" },
    { value: "2" },
    { value: "3" },
    { value: "4" },
    { value: "5" },
    { value: "6" },
    { value: "7" }
];

const chunkSize = 4;

// Group in chunks of 4 and take only truthy values
const groups = lista
.map((x, index) => { 
     return index % chunkSize === 0 ? lista.slice(index, index + chunkSize): null; 
})
.filter(x => x);

在您的模板中:

代码语言:javascript
复制
<table >
   <tr *ngFor="let item of groups">
     <td *ngFor = "let innerItem of item">
       <mat-checkbox>{{ innerItem.value }}</mat-checkbox>
     </td>
   </tr>
</table>
票数 2
EN

Stack Overflow用户

发布于 2019-05-10 00:53:06

您可以将2d数组用于您的表,如下所示:

代码语言:javascript
复制
  lista = [
[
  {value: '1'},
  {value: '2'},
  {value: '3'},
  {value: '4'}
],

[
  {value: '5'},
  {value: '6'},
  {value: '7'},
  {value: '8'}
]
 ];

和HTML

代码语言:javascript
复制
<table >
  <tr *ngFor="let row of lista">
    <td *ngFor="let col of row">
      <mat-checkbox>{{ col.value }}</mat-checkbox>
    </td>
  </tr>
</table> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56063991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档