I am building an Angular 2.0 component and I want to control it's style dynamically (using ng-style
). After a quick view on Angular 2's docs i tried this:
<div class="theme-preview" ng-style="{'font-size': fontSize}">
{{fontSize}}
</div>
And saw that the size is actually printed inside the div but did not affected the style. fontSize
is one of component's property bindings', meaning the component gets it from its parent like this:
<my-component [font-size]="size" />
While inside the component I have:
@Component({
selector: 'XXX',
properties: ['fontSize']
})
Am I missing something here?
Combining NgStyle and NgClass Directives with our knowledge of Angular Template Syntax, we can marry conditional styling with Angular's Property & Event Binding.
ng-style is used to interpolate javascript object into style attribute, not css class. And ng-class directive translates your object into class attribute.
People still reach this answer, so I've updated the plnkr to beta.1. Two things have changed so far
Example
@Component({
selector : 'my-cmp',
template : `
<div class="theme-preview" [ngStyle]="{'font-size': fontSize+'px'}">
{{fontSize}}
</div>`
})
class MyCmp {
@Input('font-size') fontSize;
}
@Component({
selector: 'my-app',
directives: [MyCmp],
template: `
<my-cmp [font-size]="100"></my-cmp>
`
})
See this plnkr (Updated to beta.1)
For specific style, you can also use this:
<div class="theme-preview" [style.font-size]="fontSize+'px'">
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With