2017-12-29 7 views
0

ich versuche, html-inhalte aus einer klasse zu injizieren, aber stattdessen das ergebnis, das ich bekomme, ist eine string anstelle des html-elements, was mache ich falsch?Angular 2 html injection output eine string statt html element

abgewinkelte Ausführung: Winkel-cli: 1.0.0-beta.20-4

HTML-Inhalt:

<div [ngStyle]=getStyles()>{{getData()}}</div> 

getData() Rückgabewert:

"<span style='color:#5999B6'>this.data</span>" 

this.data ist ein String

+0

helfen wie sieht Ihr 'getData()' Funktion aussieht? was gibst du eigentlich zurück? –

Antwort

1

Angular erlauben keine direkte Injektion von HTML in Vorlage aus Sicherheitsgründen. Sie müssen Ihren HTML-Code bereinigen. Folgen Sie der folgenden URL, um Ihr HTML zu bereinigen. https://netbasal.com/angular-2-security-the-domsanitizer-service-2202c83bd90

Hoffe, dass es

+0

Tatsächlich, ich benutze es in der Produktion ^^. Das Problem besteht darin, dass das verknüpfte Thema anfordert, die Bereinigung zu umgehen, bevor die Zeichenfolge in die Vorlage eingefügt wird. Wenn diese Zeichenfolge mit einer Benutzereingabe verknüpft ist, führt dies sicher zur XSS-Injektion. Der Sanitizer soll dafür da sein. – Supamiu

0

Sie möchten HTML mit innerHTML binden:

<div [ngStyle]="getStyles()" [innerHTML]="getData()"></div> 

Aber VORSICHTIG BE, müssen Sie die volle Kontrolle über die von getData() zurück html müssen XSS Probleme zu vermeiden.