मैं अपने कोणीय 2 ऐप में एक घटक टेम्पलेट में एक डीआईवी की पृष्ठभूमि छवि सेट करना चाहता हूं। हालाँकि मुझे अपने कंसोल में निम्नलिखित चेतावनी मिलती रहती है और मुझे वांछित प्रभाव नहीं मिलता है ... मैं अनिश्चित हूं कि क्या एंगुलर 2 में सुरक्षा प्रतिबंधों के कारण डायनेमिक सीएसएस पृष्ठभूमि छवि अवरुद्ध हो रही है या यदि मेरा एचटीएमएल टेम्पलेट टूट गया है।
यह वह चेतावनी है जिसे मैं अपने कंसोल में देखता हूं (मैंने अपना img url बदल दिया है /img/path/is/correct.png
:
चेतावनी: असुरक्षित शैली मान url (SafeValue का उपयोग करना आवश्यक है] [बंधन] = बाइंडिंग: /img/path/is/correct.png ( http://g.co/ng/security#xss देखें )) ( http: // देखें) g.co/ng/security#xss )।
बात यह है कि मैं DomSanitizationService
Angular2 का उपयोग करते हुए अपने टेम्पलेट में क्या इंजेक्ट करता हूं । यहाँ मेरा HTML है जो मेरे टेम्पलेट में है:
<div>
<div>
<div class="header"
*ngIf="image"
[style.background-image]="'url(' + image + ')'">
</div>
<div class="zone">
<div>
<div>
<h1 [innerHTML]="header"></h1>
</div>
<div class="zone__content">
<p
*ngFor="let contentSegment of content"
[innerHTML]="contentSegment"></p>
</div>
</div>
</div>
</div>
</div>
यहाँ घटक है ...
Import {
DomSanitizationService,
SafeHtml,
SafeUrl,
SafeStyle
} from '@angular/platform-browser';
@Component({
selector: 'example',
templateUrl: 'src/content/example.component.html'
})
export class CardComponent implements OnChanges {
public header:SafeHtml;
public content:SafeHtml[];
public image:SafeStyle;
public isActive:boolean;
public isExtended:boolean;
constructor(private sanitization:DomSanitizationService) {
}
ngOnChanges():void {
map(this.element, this);
function map(element:Card, instance:CardComponent):void {
if (element) {
instance.header = instance.sanitization.bypassSecurityTrustHtml(element.header);
instance.content = _.map(instance.element.content, (input:string):SafeHtml => {
return instance.sanitization.bypassSecurityTrustHtml(input);
});
if (element.image) {
/* Here is the problem... I have also used bypassSecurityTrustUrl */
instance.image = instance.sanitization.bypassSecurityTrustStyle(element.image);
} else {
instance.image = null;
}
}
}
}
}
कृपया ध्यान दें कि जब मैं उदाहरण के लिए [src] = "image" का उपयोग करके टेम्पलेट के लिए बाध्य होता हूं, तो:
<div *ngIf="image">
<img [src]="image">
</div>
और सब कुछ अच्छी तरह से काम करने के लिए लग रहा image
था पारित किया गया था bypassSecurityTrustUrl
... क्या कोई देख सकता है कि मैं क्या गलत कर रहा हूं?