J'ai une div que je veux coiffer en fonction d'une condition.
Si styleOne est vrai, je souhaite une couleur de fond rouge. Si StyleTwo est vrai, je veux que la couleur d'arrière-plan soit bleue. J'en ai la moitié qui travaille avec le code ci-dessous.
<div id="myDiv" [ngStyle]="styleOne && {'background-color': 'red'}">
Est-il possible d'ajouter une condition pour dire:
Éditer
Je pense l'avoir résolu. Ça marche. Pas sûr que ce soit le meilleur moyen:
<div id="div" [ngStyle]="styleOne && {'background-color': 'red'} || styleTwo && {'background-color': 'blue'}">
Pour un attribut de style unique, vous pouvez utiliser la syntaxe suivante:
<div [style.background-color]="style1 ? 'red' : (style2 ? 'blue' : null)">
J'ai supposé que la couleur de fond ne devrait pas être définie si ni style1
ni style2
est true
.
Puisque le titre de la question mentionne ngStyle
, voici la syntaxe équivalente avec cette directive:
<div [ngStyle]="{'background-color': style1 ? 'red' : (style2 ? 'blue' : null) }">
Vous pouvez utiliser un inline si à l'intérieur de votre ngStyle:
[ngStyle]="styleOne?{'background-color': 'red'} : {'background-color': 'blue'}"
À mon avis, une méthode pratique consiste à stocker la couleur de fond dans une variable, puis à définir la couleur de fond comme valeur de la variable:
[style.background-color]="myColorVaraible"
[ngStyle]="{'opacity': is_mail_sent ? '0.5' : '1' }"