Làm cách nào để sử dụng ngStyle để thêm background-image? Mã của tôi không hoạt động:
this.photo = 'http://dl27.fotosklad.org.ua/20121020/6d0d7b1596285466e8bb06114a88c903.jpg';
<div [ngStyle]="{'background-image': url(' + photo + ')}"></div>
Làm cách nào để sử dụng ngStyle để thêm background-image? Mã của tôi không hoạt động:
this.photo = 'http://dl27.fotosklad.org.ua/20121020/6d0d7b1596285466e8bb06114a88c903.jpg';
<div [ngStyle]="{'background-image': url(' + photo + ')}"></div>
Câu trả lời:
Tôi nghĩ bạn có thể thử điều này:
<div [ngStyle]="{'background-image': 'url(' + photo + ')'}"></div>
Từ cách đọc ngStyle
biểu cảm của bạn , tôi đoán rằng bạn đã bỏ sót một số "'" ...
this.photo = `url(${photo})`;
[style.background-image]='photo'
.
[ngStyle]
và [style.background-image]
hiển thị.
Ngoài ra, bạn có thể thử điều này:
[style.background-image]="'url(' + photo + ')'"
<div [ngStyle]="{ color: 'red', 'font-size': '22px' }">First</div>
và <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>
Xem thêm
Có vẻ như kiểu của bạn đã được khử trùng, để vượt qua nó, hãy thử sử dụng phương thức bypassSecurityTrustStyle từ 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>
Sử dụng thay thế
[ngStyle]="{'background-image':' url(' + instagram?.image + ')'}"
Hình nền của tôi không hoạt động vì URL có một khoảng trống trong đó và do đó tôi cần phải mã hóa URL.
Bạn có thể kiểm tra xem đây có phải là vấn đề bạn đang gặp phải hay không bằng cách thử một URL hình ảnh khác không có các ký tự cần thoát.
Bạn có thể thực hiện việc này với dữ liệu trong thành phần chỉ bằng cách sử dụng Javascripts được tích hợp trong encodeURI () phương thức .
Cá nhân tôi muốn tạo một đường ống cho nó để nó có thể được sử dụng trong mẫu.
Để làm điều này, bạn có thể tạo một đường ống rất đơn giản. Ví dụ:
src / app / pipe / 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>
Chủ yếu là hình ảnh không được hiển thị vì URL của bạn chứa khoảng trắng. Trong trường hợp của bạn, bạn gần như đã làm đúng mọi thứ. Ngoại trừ một điều - bạn đã không thêm các dấu ngoặc kép giống như bạn làm nếu bạn chỉ định hình nền trong css Ie
.bg-img { \/ \/
background-image: url('http://...');
}
Để làm như vậy, hãy thoát ký tự quot trong HTML qua \ '
\/ \/
<div [ngStyle]="{'background-image': 'url(\''+ item.color.catalogImageLink + '\')'}"></div>
Giải pháp của tôi, sử dụng câu lệnh if..else. Luôn luôn là một thực tiễn tốt nếu bạn muốn tránh những thất vọng không cần thiết, hãy kiểm tra xem biến của bạn có tồn tại và được thiết lập hay không. Nếu không, hãy cung cấp hình ảnh dự phòng trong trường hợp; Bạn cũng có thể chỉ định nhiều thuộc tính kiểu, như background-position: center
, v.v.
<div [ngStyle]="{'background-image': this.photo ? 'url(' + this.photo + ')' : 'https://placehold.it/70x70', 'background-position': 'center' }"></div>