我遇到了基于Angular 2 ngFor循环索引创建动态类名的问题。我不得不使用以下语法,因为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>
价值&#34;变种&#34;是一个设定长度的空数组。 &#34;变体&#34;因此没有价值。
&#34; currentVariant&#34;是一个默认等于0的数字。
编辑:上面的代码是正确的。我还有另外一个我认为与此代码相关的无关错误。
答案 0 :(得分:9)
我真的不明白你的问题; - )
有两种方法可以为特定元素设置类:
使用大括号的方式:
@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 }'
]
})
Test
仅显示第三个元素(索引2)和红色。
正如@Langley使用ngClass
指令
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 ]
})
不同的是,您需要在组件的providers
属性中指定NgClass指令。同样Test
仅显示第三个元素(索引2)和红色。
您的以下句子:&#34;值variants
是一个设定长度的空数组。 variant
因此没有价值。 currentVariant
是一个默认等于0的数字。&#34;。如果数组为空,您期望显示某些内容。 ngFor
是迭代......
希望它可以帮到你, 亨利
答案 1 :(得分:0)
万一有人想根据索引添加特定的类,则可以执行以下操作。我个人也喜欢这里的语法。假设您想将last-para
添加到数组的最后一段中:
<p
*ngFor="let p of paragraphs; let i = index"
[class.last-para]="i >= paragraphs.length - 1">
{{p}}</p>