Reputation: 4502
Currently I'm setting the image background using inline-style.
<div [ngStyle]="{background: 'url(' + section.backgroundSrc + ') no-repeat'}">
However, I'm looking for a more cleaner approach...maybe something like dynamically setting the path in the external stylesheet through angular. However, I'm not sure how it can be done.
Upvotes: 4
Views: 7826
Reputation: 1
Html - <div [style.background]="background">
TS - this.section = 'assets/images/bg/waterfallsvg.svg'; this.background = (url(${this.section}) no-repeat);
Upvotes: 0
Reputation: 1029
This is the best and easy wasy to handle
[ngStyle]="{'background': 'url(' +(user.photo ? user.photo : '')+') no-repeat 0 0 / cover'}"
Upvotes: 0
Reputation: 31
Thanks to Harsha Sampath. I did:
[style.backgroundImage]="'url('+urlToImage+')'"
works in Angular 8, urlToImage is a string property of component, resolved at runtime.
The other settings of background are fixed in css:
background-repeat: no-repeat;
background-position:center center;
background-size: 100% 100%;
Upvotes: 1
Reputation: 2532
You can't do it thourgh CSS files. However, you can make your current code little less verbose :
<div [style.background]="'url(' + section.backgroundSrc + ') no-repeat'"></div>
If angular throws security errors, you will have to sanitize too. So you will do something like this: in HTML file-
<div [style.background]="background"></div>
in your TS file
this.background=
this.sanitization.bypassSecurityTrustStyle(`url(${this.section.backgroundSrc}) no-repeat`);
Upvotes: 3
Reputation: 4855
This code has worked for me.
[style.backgroundImage]="'url('+MEDIA_URL +'/dir/'+data.image+')'"
MEDIA_URL is the base URL of uploaded location.
Angular CLI: 6.1.3 Angular: 6.1.2
Upvotes: 0