代码之家  ›  专栏  ›  技术社区  ›  jkyoutsey

如何使用@HostBinding将背景图像添加到角度2+指令?

  •  1
  • jkyoutsey  · 技术社区  · 7 年前

    @HostBinding .我知道我很接近,但当我检查它时,我看到了 background-image: none 在Chrome的检查员中。

    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 , ~/assets 等等…但是 background-image none

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

    3 回复  |  直到 7 年前
        1
  •  7
  •   Dharman TechyTech    4 年前

    background-image background-repeat background-size 7px 7px background 对于 @HostBinding('style.background') 而不是 @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

        2
  •  1
  •   WoutVC    2 年前

    我设法让Hostbinding使用background image属性。

    只要把 style 像这样在主机绑定内部 @HostBinding('style') backgroundImage: safeStyle; @HostBinding('style.background-image') backgroundImage: safeStyle;

    @HostBinding('style') backgroundImage: safeStyle;
    
    this.backgroundImage = this.sanitizer.bypassSecurityTrustStyle(`background-image: url('${url}')`);
    
        3
  •  0
  •   Simon_Weaver    6 年前

    @Alexander感谢您提供消毒剂代码。

    有趣的是,我只看到在URL之后有额外参数时才有必要这样做。如果我只有一个URL,它可以工作,但一旦我添加了“left top”,就会出现以下错误:

    enter image description here