Reputation: 672
I am working on angular 5 application, and I have requirement of applying dynamic css in style tag in template. I have tried some solutions but they are not working.
app.component.ts
customCss : any;
constructor(){}
ngOnInit(){
this.customCss['color'] = "red";
}
app.component.html
<div>
<span class="custom_css">This is angular 5 application</span>
</div>
<style>
.custom_css{
color: {{customCss.color}};
}
</style>
When I inspect the custom_css class in browser then in style it shows
.custom_css{
color: {{customCss.color}};
}
Any help is appreciated.
Upvotes: 22
Views: 30340
Reputation: 2953
By the way if you set the color like this:
<div [style.color]="color"></div>
where color='var(--cssValue)'
it would not work!
However, this works correctly:
<div [ngStyle]="{color: color}"></div>
Upvotes: 10
Reputation: 356
The given answer works if you have few elements to change in a given component, if you need to change the full overall look and feel of your app based on user's choice (and on the fly), the only way i found so far is to override css in the javascript like the following:
this.stylesService.get().subscribe(({ customStyles }) => {
const style = document.createElement('style');
style.innerHTML =
`.picture {
background-image: url(${customStyles.backgroundUrl});
}
h1, h2 {
color: ${customStyles.primaryColor};
}`;
document.body.appendChild(style);
});
Upvotes: 9
Reputation: 478
You can use [style.customClass]=“methodInComponent()”...
This will apply the class if the method in your component returns true.
Upvotes: 0
Reputation: 10127
You can use [ngStyle]
directive:
<span [ngStyle]="{'color': 'red'}">
This is angular 5 application
</span>
Or like so:
<span [ngStyle]="applyStyles()">
This is angular 5 application
</span>
And in component:
applyStyles() {
const styles = {'color' : 'red'};
return styles;
}
Upvotes: 16