当前位置: 首页 > 知识库问答 >
问题:

Angular 2基于ngFor索引生成类名

游高杰
2023-03-14

我在创建基于Angular 2ngFor循环索引的动态类名时遇到了一个问题。我不得不使用以下语法,因为Angular 2不喜欢在同一个元素上使用ngFor和ngIf。

使用此语法,我如何在{{index}}处创建索引值为的动态类名。我知道这不是正确的A2代码,但我把它放在我的代码示例中,向您展示我希望值出现在哪里。

<div class="product-detail__variants">
    <template ngFor #variant [ngForOf]="variants" #index="index">
        <div *ngIf="currentVariant == index">
            <div class="product-detail-carousel-{{index}}">

            </div>
        </div>
    </template>
</div>

值“variants”是一个设置长度的空数组。因此,“变量”没有价值。

“currentVariant”是一个默认等于0的数字。

编辑:上面这段代码是正确的。我还发现了另一个无关的错误,我认为它与这段代码有关。

共有2个答案

桓喜
2023-03-14

如果有人希望根据索引添加特定类,您可以执行此类操作。我个人也更喜欢这里的语法。假设您想将最后一段添加到数组的最后一段:

<p
  *ngFor="let p of paragraphs; let i = index"
  [class.last-para]="i >= paragraphs.length - 1">
  {{p}}</p>
易飞文
2023-03-14

我真的不明白你的问题;-)

有两种方法可以为特定元素设置类:

>

  • 使用大括号的方式:

    @Component({
      selector: 'my-app',
      template: `
        <div class="product-detail__variants">
          <template ngFor #variant [ngForOf]="variants" #index="index">
            <div *ngIf="currentVariant == index">
              <div class="product-detail-carousel-{{index}}">
                Test
              </div>
            </div>
          </template>
        </div>
      `,
      styles: [
        '.product-detail-carousel-2 { color: red }'
      ]
    })
    

    测试仅针对第三个元素(索引 2)显示为红色。

    正如使用 ngClass 指令@Langley所建议的那样

    import {NgClass} from 'angular2/common';
    
    @Component({
      selector: 'my-app',
      template: `
        <div class="product-detail__variants">
          <template ngFor #variant [ngForOf]="variants" #index="index">
            <div *ngIf="currentVariant == index">
              <div class="product-detail-carousel-{{index}}">
                Test
              </div>
            </div>
          </template>
        </div>
      `,
      styles: [
        '.product-detail-carousel-2 { color: red }'
      ],
      directives: [ NgClass ]
    })
    

    不同的是,您需要在组件的<code>providers</code>属性中指定NgClass指令。同样,<code>测试</code>仅显示第三个元素(索引2),并显示为红色。

    您的以下句子:“值变体是一个设置长度的空数组。变体因此没有值。当前变体是一个默认等于0的数字。”。如果您的数组为空,您如何期望显示某些内容。一个ngFor是一个迭代…

    希望对你有帮助,泰瑞

  •  类似资料:
    • 我想检查实际元素是否有值。 例如,我想检查巧克力是黑色还是白色。根据这个,我想显示正确的文本。 如何修复代码,使其正常工作?

    • 大家好我想发送数据选择选项 Html TS optValue是只有名字的事件但我需要t 谢谢你!

    • 本文向大家介绍详解Angular2 关于*ngFor 嵌套循环,包括了详解Angular2 关于*ngFor 嵌套循环的使用技巧和注意事项,需要的朋友参考一下 在项目开发中拿到的数据是这样的,要循环遍历出来。可是在ng2中好像不能直接遍历Object 在搜索之后发现了这种方法可以实现。 array-ngfor.ts array-ngfor.html 重点的是这个方法 结果: 以上就是本文的全部内容

    • 我有以下结构 包含枚举,该枚举包含或。现在我有了一个类,它包含一个。 这是在swagger yml中指定的(删除了一些不相关的代码) 我使用(也尝试了v3&openapi-generator)生成代码,配置如下: 现在发生的情况是,库将生成注释: 这里的问题是,如果我现在尝试反序列化/序列化包含带有的收件箱的Json字符串,它将引发异常,因为没有名称为的已知子类型。 seralizer期望注释指定

    • 如果我定义一个像这样的分层索引数据框: 内容如下所示: 我知道如何提取与给定列对应的数据。例如。对于列: 如何提取符合以下标准集的数据: , , , column , , 列 和 、、列、以及从开始的所有列 是偶数 (顺便说一句,我做了不止一次rtfm,但我真的觉得难以理解。)

    • 当使用jOOQ的代码生成器时,它会拆分嵌套类以防止大型静态初始化器,而可能包含嵌套类,例如,... 我使用带有<代码> 但使用<代码> 这是jOOQ生成器中的错误吗?或者我需要添加其他配置