我尝试在li
循环的ngFor
标记中添加鼠标悬停类。但是当鼠标悬停在li
标记上时,会添加所有li
标记btn-success
类。如何在ngFor循环中将类添加到特定的li
标记?
<li class="hhwtmainmenu" *ngFor="let headermenu of headermenus.header; let i=index; " [class.btn-success]="mouseOvered" (mouseout)="mouseOvered=false" (mouseover)="mouseOvered=true">
{{headermenu.title}}
</li>
答案 0 :(得分:1)
试试这个:
HTML:
<li class="hhwtmainmenu" *ngFor="let headermenu of headermenus.header; let i = index " [ngClass]="{'btn-success': (i == 2)}" (mouseout)="mouseOvered=false" (mouseover)="mouseOvered=true">
{{headermenu.title}}
</li>
风格:
.btn-success:hover {
background:blue;
}
答案 1 :(得分:1)
只有在确定该属性所需的某些业务逻辑(即您的情况下为CSS类)时,才应使用angular绑定。应该避免绑定,因为它由于其变化检测和生命周期钩子导致过度计算。
在您的情况下,您只想在悬停时添加样式,您可以使用:hover类为您的li元素。
.hhwtmainmenu:hover {
// The Styling you added in btn-success class
}
虽然我的方法并没有使用任何角度指令,但它会提高代码的性能。
答案 2 :(得分:1)
不是一个很好的解决方案,但会帮你解决问题。
<ul><li class="hhwtmainmenu"
*ngFor="let headermenu of headermenus.header; let i=index; "
[class.btn-success]="selectedIndex === i"
(mouseout)="removeIndex(i)"
(mouseover)="setIndex(i)">
{{headermenu.title}}
</li>
</ul>
对于组件文件中的方法:
setIndex(index: number) {
this.selectedIndex = index;
}
removeIndex(index: number) {
this.selectedIndex = null;
}
答案 3 :(得分:0)
have a look at this this
app.component.html
<div class="ul">
<li
*ngFor="let number of numbers;let i=index"
[class.selectedd]="i===selectedIndex"
(click)=toggleClass(i)>
{{number}} {{i}}
</li>
</div>
app.component.ts
import { Component } from "@angular/core";
@Component({
selector: "my-app",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent {
name = "Angular";
selected = false;
selectedIndex = -1;
numbers = [10, 20, 30, 40, 50];
toggleClass(index: number) {
this.selectedIndex = this.selectedIndex === index ? -1 : index;
}
getCondition() {
return this.selected;
}
}
app.component.css
.selectedd{
color:red;
}
答案 4 :(得分:-1)
您还必须根据您的要求添加第二个条件,例如 [class.btn-success] =“mouseOvered&amp;&amp; xxxx == yyyyy”
示例:假设您只想在headermenu title为“test”时添加类,那么您必须编写如下逻辑:
[class.btn-success]="mouseOvered && headermenu.title=='test'"