Angular 2:绑定HTML内容并保存javascript代码
我正在编写Angular 2应用程序,在某些部分需要呈现从外部API加载的HTML 通过使用angulars[innerHTML]指令,这对于纯静态HTML非常有效:Angular 2:绑定HTML内容并保存javascript代码,angular,Angular,我正在编写Angular 2应用程序,在某些部分需要呈现从外部API加载的HTML 通过使用angulars[innerHTML]指令,这对于纯静态HTML非常有效: <div [innerHtml]="htmlToBeRendered"> </div> 注入的HTML是从内容管理系统加载的。有时,这个HTML需要一些Javascript代码来实现纯粹的“UI”目的(在注入的HTML中进行一些简单的DOM操作)。这将是普通的JS,不会依赖于其他一些框架,比如JQue
<div [innerHtml]="htmlToBeRendered"> </div>
注入的HTML是从内容管理系统加载的。有时,这个HTML需要一些Javascript代码来实现纯粹的“UI”目的(在注入的HTML中进行一些简单的DOM操作)。这将是普通的JS,不会依赖于其他一些框架,比如JQuery
有没有办法在通过angular将JS代码绑定到dom的同时保留它?目前所有的JS代码都被Angular删除了
我知道这是一个安全特性,但是从中加载HTML的API可以被视为“安全”源。我相信您可以在这个用例中使用。此服务有一种专门为您的问题设计的方法:
@Component({
selector: 'test',
template: `<div [innerHtml]="htmlToBeRendered"> </div>`
})
export class TestComponent {
public htmlToBeRendered: SafeHtml;
constructor(public sanitizer: DomSanitizer, public htmlService: SomeApi){}
public getStaticHtml(): void {
this.htmlService.getStaticHtml().subscribe((html: string) => {
this.htmlToBeRendered = this.sanitizer.bypassSecurityTrustHtml(html);
});
}
}
@组件({
选择器:“测试”,
模板:``
})
导出类TestComponent{
公共HTMLTobereded:安全HTML;
构造函数(公共sanitizer:DomSanitizer,公共htmlService:SomeApi){}
public getStaticHtml():void{
this.htmlService.getStaticHtml().subscribe((html:string)=>{
this.htmltoberended=this.sanitizer.bypassSecurityTrustHtml(html);
});
}
}
有关更多信息,您也可以查看我的这篇文章我相信您可以在这个用例中使用。此服务有一种专门为您的问题设计的方法:
@Component({
selector: 'test',
template: `<div [innerHtml]="htmlToBeRendered"> </div>`
})
export class TestComponent {
public htmlToBeRendered: SafeHtml;
constructor(public sanitizer: DomSanitizer, public htmlService: SomeApi){}
public getStaticHtml(): void {
this.htmlService.getStaticHtml().subscribe((html: string) => {
this.htmlToBeRendered = this.sanitizer.bypassSecurityTrustHtml(html);
});
}
}
@组件({
选择器:“测试”,
模板:``
})
导出类TestComponent{
公共HTMLTobereded:安全HTML;
构造函数(公共sanitizer:DomSanitizer,公共htmlService:SomeApi){}
public getStaticHtml():void{
this.htmlService.getStaticHtml().subscribe((html:string)=>{
this.htmltoberended=this.sanitizer.bypassSecurityTrustHtml(html);
});
}
}
有关更多信息,您也可以查看我的这一点如果我尝试对窗口对象调用这样的方法,这会起作用:---单击我!-但如果我试图调用脚本标记中声明的我自己的方法,它将不起作用:----单击我!函数doSomething(){alert(“Hello!”);}---@Simon我也有完全相同的问题。因为几个月前你就注意到了,我想你已经找到了解决方案,请分享。这将是一个帮助。如果我尝试在窗口对象上调用如下方法,这将起作用:---单击我!-但如果我试图调用脚本标记中声明的我自己的方法,它将不起作用:----单击我!函数doSomething(){alert(“Hello!”);}---@Simon我也有完全相同的问题。因为几个月前你就注意到了,我想你已经找到了解决方案,请分享。这将是一个帮助。