在你的視圖中有腳本通常是一種不好的做法。如果你堅持這樣做,你可以使用這個組件:
scripthack.component.html:
<div #script style.display="none">
<ng-content></ng-content>
</div>
scripthack.component.ts:
import { Component, ElementRef, ViewChild, Input } from '@angular/core';
@Component({
selector: 'script-hack',
templateUrl: './scripthack.component.html'
})
export class ScriptHackComponent {
@Input()
src: string;
@Input()
type: string;
@ViewChild('script') script: ElementRef;
convertToScript() {
var element = this.script.nativeElement;
var script = document.createElement("script");
script.type = this.type ? this.type : "text/javascript";
if (this.src) {
script.src = this.src;
}
if (element.innerHTML) {
script.innerHTML = element.innerHTML;
}
var parent = element.parentElement;
parent.parentElement.replaceChild(script, parent);
}
ngAfterViewInit() {
this.convertToScript();
}
}
使用(在線):
<script-hack>alert('hoi');</script-hack>
用法(外部):
<script-hack src="//platform.twitter.com/widgets.js" type="text/javascript"></script-hack>
的答案已經表示,它不是一個角度的問題,因此它也沒有涉及到'DomSanitizer'。 –
您試圖解決的實際問題是什麼?爲什麼你認爲你需要在模板中包含腳本標籤? – jonrsharpe
那麼何時,爲什麼以及如何使用bypassSecurityTrustScript? –