Мне нужно интерполировать значение внутри ngClass
выражения, но я не могу заставить его работать.
Я пробовал это решение, которое является единственным, которое имеет для меня смысл, эти два не работают с интерполяцией:
<button [ngClass]="{'{{namespace}}-mybutton': type === 'mybutton'}"></button>
<button [ngClass]="{namespace + '-mybutton': type === 'mybutton'}"></button>
Этот работает с интерполяцией, но не работает с динамически добавленным классом, потому что вся строка добавляется как класс:
<button ngClass="{'{{namespace}}-mybutton': type === 'mybutton'}"></button>
Итак, мой вопрос в том, как вы используете такие динамические имена классов ngClass
?
Это должно работать
но Angular использует этот синтаксис. Я считаю это ошибкой. См. Также https://stackoverflow.com/a/36024066/217408
Остальные недействительны. Вы не можете использовать
[]
вместе с{{}}
. Либо одно, либо другое.{{}}
связывает строковый результат, который в этом случае не приводит к желаемому результату, потому что объект должен быть переданngClass
.Пример Plunker
В качестве обходного пути используйте синтаксис @A_Sing или
может быть использован.
источник
Вот пример того, что я делаю для нескольких классов с несколькими условиями :
[ngClass]="[variableInComponent || !anotherVariableInComponent ? classes.icon.large : classes.icon.small, editing ? classes.icon.editing : '']"
где:
classes
- объект, содержащий строки с различными именами классов. напримерclass.icon.large = "app__icon--large"
Это динамично! Обновляется по мере обновления условий.
источник
Я хочу упомянуть один важный момент, о котором следует помнить при реализации привязки классов.
class здесь не привязан правильно, потому что должно быть выполнено одно условие, тогда как у вас есть два идентичных класса 'badge-warning', которые могут иметь два разных условия. Чтобы исправить это
источник
источник
Ты можешь использовать
<i [className]="'fa fa-' + data?.icon"> </i>
источник