我需要在ngClass
表达式中插入一个值,但我无法使其工作。
我尝试了这些解决方案,这是唯一对我有意义的解决方案,这两个解决方案因插值而失败:
<button [ngClass]="{'{{namespace}}-mybutton': type === 'mybutton'}"></button>
<button [ngClass]="{namespace + '-mybutton': type === 'mybutton'}"></button>
这个用于插值但是在动态添加的类中失败,因为整个字符串被添加为一个类:
<button ngClass="{'{{namespace}}-mybutton': type === 'mybutton'}"></button>
所以我的问题是你如何在ngClass
这样使用动态类名呢?
答案 0 :(得分:140)
尝试
<button [ngClass]="type === 'mybutton' ? namespace + '-mybutton' : ''"></button>
代替。
或
<button [ngClass]="[type === 'mybutton' ? namespace + '-mybutton' : '']"></button>
甚至
<button class="{{type === 'mybutton' ? namespace + '-mybutton' : ''}}"></button>
会起作用,但使用 ngClass 的额外好处是不会覆盖由任何其他方法添加的其他类(例如:[class.xyz]
指令或class
的{{1}}属性等。
ngClass有三种类型的输入
class
key
'key'
都是相同的,并且不支持"key"
AFAIK。答案 1 :(得分:13)
这个应该有效
<button [ngClass]="{[namespace + '-mybutton']: type === 'mybutton'}"></button>
但是Angular会抛出这种语法。我认为这是一个错误。 另请参阅https://stackoverflow.com/a/36024066/217408
其他人无效。您无法将[]
与{{}}
一起使用。一个或另一个。 {{}}
绑定了字符串化的结果,在这种情况下不会导致所需的结果,因为需要将对象传递给ngClass
。
解决方法@A_Sing或
显示的语法<button [ngClass]="type === 'mybutton' ? namespace + '-mybutton' : ''"></button>
可以使用。
答案 2 :(得分:1)
这是我在多个条件的情况下为多个类做的事情的一个示例:
[ngClass]="[variableInComponent || !anotherVariableInComponent ? classes.icon.large : classes.icon.small, editing ? classes.icon.editing : '']"
其中:
classes
是一个包含各种类名字符串的对象。
例如class.icon.large = "app__icon--large"
这是动态的!随着条件的更新而更新。
答案 3 :(得分:1)
for files in csv_file_list:
with open(files, 'r') as r:
next(r) #skip headers
rr = csv.reader(r)
for row in rr:
#do something
答案 4 :(得分:0)
您可以使用<i [className]="'fa fa-' + data?.icon"> </i>
答案 5 :(得分:0)
基本上是其他答案的重复-但我没有完全理解。 也许有人现在终于可以通过这个例子了。
[ngClass]="['svg-icon', 'recolor-' + recolor, size ? 'size-' + size : '']"
将导致例如在
class="svg-icon recolor-red size-m"
答案 6 :(得分:0)
更优雅的解决方案是使用&&
(使用NgFor
及其first
,可以自由使用自己的匹配项):
<div
*ngFor="let day of days;
let first = first;"
class="day"
[ngClass]="first && ('day--' + day)"
</div>
结果将为:
class="day day--monday"
答案 7 :(得分:-1)
我想提到实现类绑定时要记住的一些重要点。
[ngClass] = "{
'badge-secondary': somevariable === value1,
'badge-danger': somevariable === value1,
'badge-warning': somevariable === value1,
'badge-warning': somevariable === value1,
'badge-success': somevariable === value1 }"
此处的类未正确绑定,因为要满足一个条件,而您有两个相同的类“徽章警告”,它们可能具有两个不同的条件。 要纠正此问题
[ngClass] = "{
'badge-secondary': somevariable === value1,
'badge-danger': somevariable === value1,
'badge-warning': somevariable === value1 || somevariable === value1,
'badge-success': somevariable === value1 }"