Я пытаюсь использовать background-image inline для моих * ngFor элементов списка. Im мой компонент I класса объявить переменную, которая хранит общую часть моего изображения URL (например, это http://storage.com/), а также уникальные части URL-образов как this.image (скажем, они QWERTY/01.jpg, uiop/02.jpg, Asdfg/03.jpg, и т.д.)Angular2 DomSanitizer issue
Все вместе это выглядит как
export class AppComponent {
cartItems: any;
image: any;
constructor(public cartService: CartService, private sanitizer: DomSanitizer) { }
ngOnInit(){
let sanitizedUrl = this.sanitizer.bypassSecurityTrustUrl('http://storage.com/' + this.image);
this.cartService.getCartItems().subscribe(
(data) => this.cartItems = data
);
}
по мнению у меня есть где cartItem является элементом более сформированного списка * ngFor:
<span class="col cart__item--imageBox"
[style.background-image.url]="('sanitizedUrl' + cartItem.image)">
</span>
Консоль показывает предупреждение:
WARNING: sanitizing unsafe style value sanitizedUrl<<here go the images URLs endings - qwerty/01.jpg, uiop/02.jpg, asdfg/03.jpg, etc >> (see http://g.co/ng/security#xss).
Я предполагал URL, чтобы быть "продезинфицировать".
Что нужно сделать, чтобы иметь возможность использовать background-image стили inline, как в моем примере выше?
UPD! я переписал свою функцию NgOnInit в том, что:
ngOnInit(){
let addSanitizedUrl = (cartItem) => {
cartItem.sanitizedImageUrl = this.sanitizer.bypassSecurityTrustStyle('https://s27.postimg.org/' + this.image + cartItem.image)
return cartItem;
};
this.cartService.getCartItems().subscribe(
(data) => this.cartItems = data.map(addSanitizedUrl) ngOnInit(){
let addSanitizedUrl = (cartItem) => {
cartItem.sanitizedImageUrl = this.sanitizer.bypassSecurityTrustStyle('https://s27.postimg.org/' + this.image + cartItem.image)
return cartItem;
};
this.cartService.getCartItems().subscribe(
(data) => this.cartItems = data.map(addSanitizedUrl)
);
}
В Предостережениях исчезло, но похоже, что приложение не находит ни одного из моих изображений, передаваемых в службе. Просто не можете найти их через DevTools Inspector.
Обновлено! Я дезинфицировал стиль в каждом из моих объектов (поскольку у меня больше нет предупреждений в консоли), но я не могу получить изображения, представленные в представлении (я не могу найти их ни в Инспекторе). И я не могу игнорировать эти предупреждения, потому что изображения заблокированы для рендеринга. –
Что вы подразумеваете под изображениями? – Aravind
Я имею в виду, что они не отображаются. Я полагаю, из-за предупреждений о небезопасном URL-адресе/стиле –