Comment utiliser ngStyle pour ajouter une image de fond? Mon code ne fonctionne pas:
this.photo = 'http://dl27.fotosklad.org.ua/20121020/6d0d7b1596285466e8bb06114a88c903.jpg';
<div [ngStyle]="{'background-image': url(' + photo + ')}"></div>
Je pense que vous pourriez essayer ceci:
<div [ngStyle]="{'background-image': 'url(' + photo + ')'}"></div>
En lisant votre expression ngStyle
, je suppose que vous avez manqué des "'" ...
Aussi, vous pouvez essayer ceci:
[style.background-image]="'url(' + photo + ')'"
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>
Voir également
On dirait que votre style a été nettoyé. Pour le contourner, essayez d'utiliser la méthode bypassSecurityTrustStyle de 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>
Utilisez plutôt
[ngStyle]="{'background-image':' url(' + instagram?.image + ')'}"
Mon image d'arrière-plan ne fonctionnait pas parce que l'URL contenait un espace et que je devais donc l'encoder.
Vous pouvez vérifier si c'est le problème que vous rencontrez en essayant une URL d'image différente qui ne contient pas de caractères à échapper.
Vous pouvez le faire pour les données du composant en utilisant simplement les scripts Javascripts intégrés dans la méthode encodeURI () .
Personnellement, je voulais créer un tuyau pour qu'il puisse être utilisé dans le modèle.
Pour ce faire, vous pouvez créer un tuyau très simple. Par exemple:
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>