在你的视图中有脚本通常是一种不好的做法。如果你坚持这样做,你可以使用这个组件:
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? –