Try
<button [ngClass]="type === 'mybutton' ? namespace + '-mybutton' : ''"></button>
instead.
or
<button [ngClass]="[type === 'mybutton' ? namespace + '-mybutton' : '']"></button>
or even
<button class="{{type === 'mybutton' ? namespace + '-mybutton' : ''}}"></button>
will work but extra benefit of using ngClass is that it does not overwrite other classes that are added by any other method( eg: [class.xyz]
directive or class
attribute, etc.) as class
does.
Angular 9 Update
The new compiler, Ivy, brings more clarity and predictability to what happens when there are different types of class-bindings on the same element. Read More about it here.
ngClass takes three types of input
- Object: each key corresponds to a CSS class name, you can’t have dynamic keys, because
key
'key'
"key"
are all same, and[key]
is not supported AFAIK. - Array: can only contain list of classes, no conditions, although ternary operator works
- String/ expression: just like normal class attribute