【发布时间】:2017-07-21 17:28:02
【问题描述】:
我需要创建一个通过@HostBinding 添加背景图像的Angular 2+(我在4.x)指令(不是组件)。我知道我很接近了,但是当我检查它时,我在 Chrome 的检查器中看到了background-image: none。
import { Directive, HostBinding } from '@angular/core';
import { DomSanitizer, SafeStyle } from '@angular/platform-browser';
@Directive({
selector: '[myDirectiveWithBackgroundImage]'
})
export class MyDirective {
@HostBinding('style.background-image')
public backgroundImage: SafeStyle;
constructor(private sanitizer: DomSanitizer) {
this.backgroundImage = this.sanitizer.bypassSecurityTrustStyle(
'url(assets/images/favicon16.png) no-repeat scroll 7px 7px;'
);
}
}
我的 assets/images/favicon.16png 由 webpack 提供服务。我尝试了各种路径选项,/assets、~/assets 等……但background-image 始终是none
【问题讨论】:
-
你能创建一个 plunker 吗?
-
/assets 相对于 /src 在哪里?
-
@Maximus plnkr.co/edit/5w87jGVC7iZ7711x7qWV?p=preview 但是,在 plunkr 中它并没有添加
background-image根本。它确实添加了其他样式。 -
@Vega src/main/ui/assets 但是,在提供服务时,资产是在根目录下提供的。
-
'url(/main/ui/assets/images/favicon16.png) no-repeat scroll 7px 7px;'也是如此
标签: angular background-image angular2-directives angular2-hostbinding