Arka plan görüntüsü eklemek için ngStyle nasıl kullanılır? Kodum çalışmıyor:
this.photo = 'http://dl27.fotosklad.org.ua/20121020/6d0d7b1596285466e8bb06114a88c903.jpg';
<div [ngStyle]="{'background-image': url(' + photo + ')}"></div>
Arka plan görüntüsü eklemek için ngStyle nasıl kullanılır? Kodum çalışmıyor:
this.photo = 'http://dl27.fotosklad.org.ua/20121020/6d0d7b1596285466e8bb06114a88c903.jpg';
<div [ngStyle]="{'background-image': url(' + photo + ')}"></div>
Yanıtlar:
Sanırım şunu deneyebilirsin:
<div [ngStyle]="{'background-image': 'url(' + photo + ')'}"></div>
İfadeni okurken ngStyle, sanırım bazı "" "kaçırdın ...
this.photo = `url(${photo})`; [style.background-image]='photo'.
[ngStyle]ve [style.background-image]işleme hatasına neden olabileceğini unutmayın.
Ayrıca şunu deneyebilirsiniz:
[style.background-image]="'url(' + photo + ')'"
<div [ngStyle]="{ color: 'red', 'font-size': '22px' }">First</div> ve <div [style.color]="'red'" [style.font-size.px]="22">Second</div>
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>
Ayrıca bakınız
Tarzınız sanite edilmiş gibi görünüyor, onu atlamak için DomSanitizer'dan bypassSecurityTrustStyle yöntemini kullanmayı deneyin.
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>
Bunun yerine kullanın
[ngStyle]="{'background-image':' url(' + instagram?.image + ')'}"
Arka plan resmim çalışmıyordu çünkü URL'de bir boşluk vardı ve bu yüzden onu URL olarak kodlamam gerekiyordu.
Kaçması gereken karakterlere sahip olmayan farklı bir resim URL'sini deneyerek sorunun bu olup olmadığını kontrol edebilirsiniz.
Bunu yalnızca encodeURI () yönteminde yerleşik Javascripts kullanarak bileşendeki verilere yapabilirsiniz .
Şahsen ben şablonda kullanılabilmesi için bir boru oluşturmak istedim.
Bunu yapmak için çok basit bir boru oluşturabilirsiniz. Örneğin:
src / app / borular / 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>
Çoğunlukla resim, URL’niz boşluk içerdiğinden görüntülenmez. Senin durumunda neredeyse her şeyi doğru yaptın. Bir şey dışında - css Ie'de arka plan görüntüsü belirtirseniz yaptığınız gibi tek tırnak eklemediniz
.bg-img { \/ \/
background-image: url('http://...');
}
Bunu yapmak için HTML'deki tırnak karakterinden \ 'yoluyla kaçın
\/ \/
<div [ngStyle]="{'background-image': 'url(\''+ item.color.catalogImageLink + '\')'}"></div>
Çözümüm, if..else ifadesini kullanarak. Gereksiz hayal kırıklıklarından kaçınmak istiyorsanız, değişkeninizin var olduğunu ve ayarlandığını kontrol etmek her zaman iyi bir uygulamadır. Aksi takdirde, durumda bir yedek imaj sağlayın; Ayrıca background-position: center, vb. Gibi birden çok stil özelliği de belirtebilirsiniz .
<div [ngStyle]="{'background-image': this.photo ? 'url(' + this.photo + ')' : 'https://placehold.it/70x70', 'background-position': 'center' }"></div>