J'essaie de définir les états de la propriété de survol à l'aide de [ngStyle]. Ce qui suit définit uniquement les couleurs d'état normal. Lorsque je passe la souris sur le bouton, celui-ci ne se modifie pas comme prévu.
<button (click)="logout()"
class="btn register-button"
[ngStyle]=" hover ? {'color': theme.logoutButtonColorPressed,
'border-color': theme.logoutButtonBorderColorPressed,
'background-color': theme.logoutButtonBackgroundColorPressed } :
{'color': theme.logoutButtonColorNormal,
'border-color': theme.logoutButtonBorderColorNormal,
'background-color': theme.logoutButtonBackgroundColorNormal }">Logout</button>
Si vous voulez changer de style en survol, ajoutez ce qui suit au bouton
<button (mouseover)="hover=true" (mouseleave)="hover=false"...
Si vous avez besoin de sélectionner des boutons individuels en modifiant le style, c’est ce que j’ai fait.
btn.component.html
<div *ngIf="socketData && socketData.status === 'ok'">
<div *ngFor="let button of socketData.message; let i = index"
[ngStyle]="hovered === i ? pressedStyle(button) : buttonStyle(button)"
(mouseover)="hovered = i"
(mouseout)="hovered = -1"
(click)="reqTicket(button.id)">
{{button.someImportantData}} - {{button.yetMoreImportantData}}
</div>
</div>
btn.component.ts
export class ButtonComponent implements OnInit {
style;
hovered;
...
private buttonStyle(button) {
let btnType = this.setBtnType(button);
this.style = {
'color': '#' + button.textColor,
'font-size': button.textSize + 'px',
'background-color': btnType.background
};
return this.style;
}
private pressedStyle(button) {
let pressed = this.setBtnType(button, this.hovered);
this.style['background-color'] = pressed.background;
return this.style;
}
private setBtnType(button, hovered?) {
let type = 'normal';
let btn = {
normal: {
background: '#' + button.backColor,
},
pressed: {
background: '#' + button.backColor,
}
}
if(hovered > -1) type = 'pressed';
return {
border: btn[type].width + ' ' + btn[type].color + ' ' + 'solid',
background: btn[type].background
};
}
}
J'espère que ça aide quelqu'un :)
:hover
est une pseudo classe, il ne peut pas être ajouté avec style
. Vous devez utiliser CSS et ngClass
ou [class.xxxx]=".."
.