<div *ngFor="let project of projects; let i = index;">
<div class="project-card details-complete */random class/*">
</div>
</div>
我有预定义的class = ['teal','pink','green','orange','magenta'];当* ngFor填充DOM时,我想随机分配其中一个类。我试图通过在组件中生成随机0-4数字并指定[class] =“randomClassName():className”来实现,但我在检查错误后更改了表达式。 [ngClass]也没有帮助。有没有办法用指令或其他api实现这个?
@Directive({
selector: '[randomColor]'
})
export class RandomColorDirective implements OnInit {
constructor(private elRef: ElementRef, private renderer:
Renderer2) {}
ngOnInit(): void {
const COLORS = ['teal', 'pink', 'green', 'orange',
'magenta'];
let randomNumber = Math.floor(Math.random() *
COLORS.length);
this.renderer.addClass(this.elRef.nativeElement,
`${COLORS[randomNumber]}`);
}
}
为了防止有人需要它,我使用上面的指令解决了它。
假设项目是您的数组,那么我可以使用此项目的每个颜色映射颜色。我有一组颜色
colors = ['grad1', 'grad2', 'grad3', 'grad4', 'grad5', 'grad6'];
您可以在.scss文件中声明此颜色类,并将此颜色映射到.ts文件中,如下所示
this.projects.map(project => {
project.color = this.colors[Math.floor(Math.random() * this.colors.length)];
return project;
});
还要在.html文件中更新,如下所示
<div *ngFor="let project of projects; let i = index;">
<div class="project-card details-complete" [ngClass]="project.color">
</div>
</div>
在你.ts文件中 -
public classValues = ['teal', 'pink', 'green', 'orange', 'magenta'];
在您的HTML文件中 -
<div *ngFor="let project of projects; let i = index;">
<div class="project-card details-complete classValues[i]"
[ngClass] = "(index == classValues.length - 1) ? index = 0:''">
</div>
</div>