在Angular 4中动态设置背景图像的推荐方法是什么?

时间:2017-09-08 13:45:58

标签: css angular

目前我正在使用内嵌式设置图像背景。

<div [ngStyle]="{background: 'url(' + section.backgroundSrc + ') no-repeat'}">

然而,我正在寻找一种更清洁的方法......也许就像通过角度动态设置外部样式表中的路径一样。但是,我不确定如何做到这一点。

5 个答案:

答案 0 :(得分:2)

你不能通过CSS文件来做。但是,您可以使当前代码更简洁:

<div [style.background]="'url(' + section.backgroundSrc + ') no-repeat'"></div>

如果角度引发安全错误,您还必须进行消毒。所以你会做这样的事情: 在HTML文件中 -

<div [style.background]="background"></div>

在您的TS文件中

this.background= 
this.sanitization.bypassSecurityTrustStyle(`url(${this.section.backgroundSrc}) no-repeat`);

答案 1 :(得分:0)

此代码对我有用。

[style.backgroundImage]="'url('+MEDIA_URL +'/dir/'+data.image+')'"

MEDIA_URL是上载位置的基本URL。

Angular CLI:6.1.3 角度:6.1.2

答案 2 :(得分:0)

感谢Harsha Sampath。 我做到了:

[style.backgroundImage]="'url('+urlToImage+')'"

可在Angular 8中使用 urlToImage是组件的字符串属性,可在运行时解析。

背景的其他设置已在CSS中固定:

background-repeat: no-repeat;
background-position:center center;
background-size: 100% 100%;

答案 3 :(得分:0)

这是最好的和容易处理的

[ngStyle]="{'background': 'url(' +(user.photo ? user.photo : '')+') no-repeat 0 0 / cover'}"

答案 4 :(得分:0)

HTML - <div [style.background]="background">

TS - this.section = 'assets/images/bg/waterfallsvg.svg'; this.background = (url(${this.section}) no-repeat);