web-dev-qa-db-ja.com

ngStyle(angular2)を使って背景画像を追加するにはどうすればいいですか?

背景画像を追加するためにngStyleを使用する方法?私のコードはうまくいきません。

this.photo = 'http://dl27.fotosklad.org.ua/20121020/6d0d7b1596285466e8bb06114a88c903.jpg';

<div [ngStyle]="{'background-image': url(' + photo + ')}"></div>
78
Ignat

私はあなたがこれを試すことができると思います:

<div [ngStyle]="{'background-image': 'url(' + photo + ')'}"></div>

あなたのngStyle式を読むことから、私はあなたがいくつかの「 '」を逃したと思います...

182

また、これを試すことができます。

[style.background-image]="'url(' + photo + ')'"

76
Dmytro Tolok
import {BrowserModule, DomSanitizer} from '@angular/platform-browser'

  constructor(private sanitizer:DomSanitizer) {
    this.name = 'Angular!'
    this.backgroundImg = sanitizer.bypassSecurityTrustStyle('url(http://www.freephotos.se/images/photos_medium/white-flower-4.jpg)');
  }
<div [style.background-image]="backgroundImg"></div>

また見なさい

22

あなたのスタイルがサニタイズされているように見えますが、それを回避するにはDomSanitizerのbypassSecurityTrustStyleメソッドを使用してみてください。

import { Component, OnInit, Input } from '@angular/core';
import { DomSanitizer, SafeStyle } from '@angular/platform-browser';

@Component({
  selector: 'my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.scss']
})

export class MyComponent implements OnInit {

  public backgroundImg: SafeStyle;
  @Input() myObject: any;

  constructor(private sanitizer: DomSanitizer) {}

  ngOnInit() {
     this.backgroundImg = this.sanitizer.bypassSecurityTrustStyle('url(' + this.myObject.ImageUrl + ')');
  }

}
<div *ngIf="backgroundImg.length > 0" [style.background-image]="backgroundImg"></div>
6
Uliana Pavelko

代わりに使う

[ngStyle]="{'background-image':' url(' + instagram?.image + ')'}"
3
Vijay Chauhan

URLにスペースがあるため、背景画像が機能していなかったため、URLエンコードする必要がありました。

エスケープする必要がある文字が含まれていない別の画像URLを試すことで、これが問題であるかどうかを確認できます。

encodeURI() メソッドに組み込まれているJavascriptを使用して、コンポーネント内のデータに対してこれを実行できます。

個人的には、テンプレートで使用できるようにパイプを作成したいと思いました。

これを行うには、非常に単純なパイプを作成することができます。例えば:

src/app/pipes/encode-uri.pipe.ts

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'encodeUri'
})
export class EncodeUriPipe implements PipeTransform {

  transform(value: any, args?: any): any {
    return encodeURI(value);
  }
}

src/app/app.module.ts

import { EncodeUriPipe } from './pipes/encode-uri.pipe';
...

@NgModule({
  imports: [
    BrowserModule,
    AppRoutingModule
    ...
  ],
  exports: [
    ...
  ],
 declarations: [
    AppComponent,
    EncodeUriPipe
 ],
 bootstrap: [ AppComponent ]
})

export class AppModule { }

src/app/app.component.ts

import {Component} from '@angular/core';

@Component({
  // tslint:disable-next-line
  selector: 'body',
  template: '<router-outlet></router-outlet>'
})
export class AppComponent {
  myUrlVariable: string;
  constructor() {
    this.myUrlVariable = 'http://myimagewith space init.com';
  }
}

src/app/app.component.html

<div [style.background-image]="'url(' + (myUrlVariable | encodeUri) + ')'" ></div>
0
Tom Benyon