Necesito interpolar un valor dentro de una ngClass
expresión pero no puedo hacer que funcione.
Probé estas soluciones que son las únicas que tienen sentido para mí, estas dos fallan con la interpolación:
<button [ngClass]="{'{{namespace}}-mybutton': type === 'mybutton'}"></button>
<button [ngClass]="{namespace + '-mybutton': type === 'mybutton'}"></button>
Este funciona con la interpolación pero falla con la clase agregada dinámicamente porque toda la cadena se agrega como una clase:
<button ngClass="{'{{namespace}}-mybutton': type === 'mybutton'}"></button>
Entonces, mi pregunta es ¿cómo se usan los nombres de clase dinámicos de ngClass
esta manera?
Este debería funcionar
pero Angular se basa en esta sintaxis. Consideraría esto un error. Consulte también https://stackoverflow.com/a/36024066/217408
Los demás no son válidos. No se puede usar
[]
junto con{{}}
. Cualquiera de los dos.{{}}
enlaza el resultado en cadena, lo que no conduce al resultado deseado en este caso porque es necesario pasar un objetongClass
.Ejemplo de plunker
Como solución alternativa, la sintaxis mostrada por @A_Sing o
puede ser usado.
fuente
Aquí hay un ejemplo de algo que estoy haciendo para varias clases con múltiples condiciones :
[ngClass]="[variableInComponent || !anotherVariableInComponent ? classes.icon.large : classes.icon.small, editing ? classes.icon.editing : '']"
donde:
classes
es un objeto que contiene cadenas de varios nombres de clase. p.ejclass.icon.large = "app__icon--large"
¡Es dinámico! Actualizaciones a medida que se actualizan las condiciones.
fuente
Quiero mencionar algunos puntos importantes a tener en cuenta al implementar el enlace de clases.
class aquí no es vinculante correctamente porque se debe cumplir una condición, mientras que tiene dos clases idénticas 'insignia-advertencia' que pueden tener dos condiciones diferentes. Para corregir esto
fuente
fuente
Puedes usar
<i [className]="'fa fa-' + data?.icon"> </i>
fuente