Angular 2:绑定HTML内容并保存javascript代码

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

我正在编写Angular 2应用程序,在某些部分需要呈现从外部API加载的HTML

通过使用angulars[innerHTML]指令,这对于纯静态HTML非常有效:

<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我也有完全相同的问题。因为几个月前你就注意到了,我想你已经找到了解决方案,请分享。这将是一个帮助。