单行的Angular6多个ngFor-如何在一个ngFor中传递两个值

Posted

技术标签:

【中文标题】单行的Angular6多个ngFor-如何在一个ngFor中传递两个值【英文标题】:Angular6 multiple ngFor for single row - How to pass two values in one ngFor 【发布时间】:2019-03-30 17:14:10 【问题描述】:

在表头中,我有动态列和搜索排序功能。但对于特定列,我需要禁用排序功能。 在表中

<thead>
      <tr class="table-head">
        <th *ngFor="let colName of reportColHeader; let i = index">
          colName
          <i [class]="sortIcons[colName]" (click)="toggleSort(colName, i)"></i>
        </th>
      </tr>
    </thead>

constructor 我将值作为数组传递。不是来自服务器,它只是静态的

this.reportColHeader = ['ID', 'LABEL 1', 'LABEL 2', 'More'];

所以结果将如下所示

<tr>
 <th>ID <i></i></th>
 <th>LABEL 1 <i></i></th>
 <th>LABEL 2 <i></i></th>
 <th>More <i></i></th>
</tr>

在这里我想禁用特定列的 (排序功能)。 不仅是最后一列或第 n 列。 我的假设是,可能还有一个像

这样的数组
this.reportColHeaderOptions = ['true', 'true', 'false', 'false'];

通过这个值可以显示或隐藏&lt;i&gt;&lt;/i&gt; 那么我怎样才能在ngFor 中传递这个。 注意:这里我不能使用索引,因为索引会改变。 但我可以按照相同的顺序关注 this.reportColHeaderthis.reportColHeaderOpions

【问题讨论】:

您也可以作为对象数组传递而不是 2 个数组,对吗?像 [label: 'ID', isSortDisabled: true, label: 'LABEL 1', isSortDisabled: true] 这样的东西? 【参考方案1】:

为什么不能使用 index ?你可以这样做:

    <th *ngFor="let colName of reportColHeader; let i = index">
      colName
      <i *ngIf="reportColHeaderOpions[i]=='true'"></i>
    </th>

【讨论】:

怎么可能。两者都在不同的数组中。所以索引会起作用。?显示错误类型错误:无法读取未定义的属性“0”。因为它是不同的数组。 这意味着reportColHeaderOpions 在此上下文中不存在。您确定您的组件中有public reportColHeaderOpions = ['true', 'true', 'false', 'false']; 吗?是的,它们是 2 个不同的数组,但您可以使用 [i] 访问它们,因为 i 只是您之前声明的数字(0、1、2、3)。

以上是关于单行的Angular6多个ngFor-如何在一个ngFor中传递两个值的主要内容,如果未能解决你的问题,请参考以下文章

Angular 6 *ngFor 为第一个,奇数,偶数和最后一个显示不同的样式

角度 6:在选择“选择”的值后尝试循环抛出一个对象(通过 *ngFor)

*ngFor - 如果找到,如何在模板循环中覆盖值

如何在 Angular 6 中显示以 base64 格式编码的图像?

如何更改在 ngFor 中单击的每个 div 的背景颜色?

使用ngFor的表中的角度限制行数[重复]