我需要创建一个通过@HostBinding
添加背景图像的Angular 2+(4.x中的I' m)指令(非组件)。我知道我已经关闭,但当我检查它时,我在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;'
);
}
}
我的资产/ images / favicon.16png由webpack提供。我尝试了各种路径选项/assets
,~/assets
等等......但background-image
总是none
答案 0 :(得分:6)
background-image 不接受background-repeat
的不重复和background-size
的 7px等速记属性7px的即可。要使用背景速记属性,您需要使用background
而不是@HostBinding('style.background')
的CSS @HostBinding('style.background-image')
,如:
@HostBinding('style.background')
public background: SafeStyle;
constructor(private sanitizer: DomSanitizer) {
this.background = this.sanitizer.bypassSecurityTrustStyle(
'url("//ssl.gstatic.com/gb/images/i1_1967ca6a.png") no-repeat scroll 7px 7px'
);
}
请参阅此分叉plunker,了解正在使用的功能。
希望这有帮助!
答案 1 :(得分:0)