0

@HostBindingで背景画像を追加するAngular 2+(私は4.xにあります)指令(コンポーネントではありません)を作成する必要があります。私は私が近くにいることを知っていますが、私はそれを調べると、クロムの検査官のbackground-image: noneが表示されます。@HostBindingを使用してAngular 2+ディレクティブに背景画像を追加するにはどうすればよいですか?

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ないbackground-repeatを無リピートなど速記プロパティを受け入れず、常にnone

https://plnkr.co/edit/5w87jGVC7iZ7711x7qWV?p=preview

+0

プランナーを作成できますか? –

+0

ここで、/ assetsは/ srcに関連していますか? – Vega

+0

@ Maximus https://plnkr.co/edit/5w87jGVC7iZ7711x7qWV?p=preview しかし、plunkrでは 'background-image' **を追加しません**。それは他のスタイルを追加します。 – jkyoutsey

答えて

4

background-imageですbackground-size7px 7px。背景速記のプロパティを使用するには、のような@HostBinding('style.background')代わりの@HostBinding('style.background-image')のためのCSS backgroundを使用する必要があります:

@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をフォーク。

うまくいけば助けてください!

+0

15年以上のHTML開発者と私はそれを知っていたはずです!ありがとう!それを壊していた文字列の最後には、「;」という迷子があったことに注目する価値があります。私はプランナーを作業状態に更新しました。 – jkyoutsey

関連する問題