Preciso interpolar um valor dentro de uma ngClass
expressão, mas não consigo fazer funcionar.
Tentei essas soluções que são as únicas que fazem sentido para mim, essas duas falham com a interpolação:
<button [ngClass]="{'{{namespace}}-mybutton': type === 'mybutton'}"></button>
<button [ngClass]="{namespace + '-mybutton': type === 'mybutton'}"></button>
Este funciona com a interpolação, mas falha com a classe adicionada dinamicamente porque toda a string é adicionada como uma classe:
<button ngClass="{'{{namespace}}-mybutton': type === 'mybutton'}"></button>
Então, minha pergunta é como você usa nomes de classe dinâmicos ngClass
assim?
Este deve funcionar
mas o Angular usa essa sintaxe. Eu consideraria isso um bug. Veja também https://stackoverflow.com/a/36024066/217408
Os outros são inválidos. Você não pode usar
[]
junto com{{}}
. Um ou outro.{{}}
vincula o resultado stringified que não leva ao resultado desejado neste caso porque um objeto precisa ser passado parangClass
.Exemplo de êmbolo
Como solução alternativa, a sintaxe mostrada por @A_Sing ou
pode ser usado.
fonte
Aqui está um exemplo de algo que estou fazendo para várias classes com várias condições :
[ngClass]="[variableInComponent || !anotherVariableInComponent ? classes.icon.large : classes.icon.small, editing ? classes.icon.editing : '']"
onde:
classes
é um objeto que contém strings de vários nomes de classe. por exemploclass.icon.large = "app__icon--large"
É dinâmico! Atualiza conforme as condições são atualizadas.
fonte
quero mencionar alguns pontos importantes a serem mantidos em mente ao implementar a associação de classe.
a classe aqui não é vinculativa corretamente porque uma condição deve ser atendida, enquanto você tem duas classes idênticas 'badge-warning' que podem ter duas condições diferentes. Para corrigir isso
fonte
fonte
Você pode usar
<i [className]="'fa fa-' + data?.icon"> </i>
fonte