2016-01-19 9 views
48

Jak używać ngStyle do dodawania tła? Mój kod nie działa:Jak dodać obraz tła za pomocą ngStyle (angle2)?

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

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

dlaczego używacie wsporniki na ngStyle atrybut? – gal

+0

Zobacz również http://stackoverflow.com/questions/37076867/in-rc-1-some-styles-cant-be-added-using- binding-syntax na temat pokrewnego problemu w RC.1 –

Odpowiedz

110

Myślę, że można spróbować to:

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

Od czytania wyrażenie ngStyle, myślę, że brakowało trochę "'" ...

+0

Testowany. Praca z RC.1. Nie powinno być potrzebne dla RC.2 i nowszych wydań zgodnie z tym, co mówią [tutaj] (http://stackoverflow.com/questions/37076867/in-rc-1-some-styles-cant-be-added- using-binding-syntax) –

+0

Dziękuję ... To zadziałało –

+0

Wielkie dzięki, zadziałało – Mamadou

60

Ponadto można spróbować to:

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

+1

Zastanawiam się, jakie są plusy/minusy używania tego w porównaniu do NgStyle? – redfox05

+2

@ redfox05 Przypuszczam, że ngStyle jest cukrem syntaktycznym. Główną różnicą jest to, że ngStyle pozwala na zastosowanie kilku reguł css, ale [styl. ] pozwala tylko jeden. Kolejnym są równoważne: ''

First
i '' –

+0

Second
Użyłem tego [style.css] podejście, choć nie mogę [style.background-repeat] do pracy, wiesz dlaczego? –

14
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> 

Zobacz również

4

Wygląda Twój styl zostało oczyszczone, aby przez spróbuj użyć metody bypassSecurityTrustStyle z DomSanitizer.

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>

0
Use Instead 

[ngStyle]="{background:' url(assets/img/' + youtube[0].image + ')'}" 
Powiązane problemy