递归 Angular 2 HTML 绑定

Tho*_*aut 6 typescript ionic-framework ionic2 angular2-template angular

这是我的问题,我想在 HTML 模板中包含一个按钮,该按钮链接到外部网站。但是,当读取 HTML 时,谷歌浏览器会说:

WARNING: sanitizing HTML stripped some content (see http://g.co/ng/security#xss).
Run Code Online (Sandbox Code Playgroud)

似乎 Angular 2 的 innerHTML 属性不允许 2 个递归 HTML 绑定。

这是我的代码:

<ion-col width-80 innerHtml="{{ slide.content + '<p><button round full (click)=`' 
+ slide.button.url +'`>'+slide.button.text+'</button>' }}"></ion-col>
Run Code Online (Sandbox Code Playgroud)

(click) 属性被删除,只(slide.button.text)显示为单个文本。

任何解决方案?

slide 是这样的:

{
    img: 'img/picture.png',
    content: `sometext`,
    button : {
        url: `http://www.foo.com`,
        text: `Site foo`
    }
}
Run Code Online (Sandbox Code Playgroud)

mic*_*yks 2

注意:我不知道ion所以将其更改为HTML control. 改为button控制a (link)

您可以DomSanitizationService如下图所示使用,

工作演示: http://plnkr.co/edit/y2BXvIO8egNxJPmM3j43? p=preview

//our root app component
import {Component, Pipe} from '@angular/core'
import {DomSanitizationService} from '@angular/platform-browser';

@Component({
  selector: 'my-app',

  template: `
    <span [innerHTML]="myHTML"></span>
  `,
})

export class AppComponent {
  slide={
    img: 'img/picture.png',
    content: `sometext`,
    button : {
        url: `http://www.foo.com`,
        text: `Site foo`
    }
  };

  dangerousUrl='<p><a href='+`${this.slide.button.url}`+'>'+`${this.slide.button.text}`+'</a></p>';

  constructor(sanitizer: DomSanitizationService) {
       this.myHTML= sanitizer.bypassSecurityTrustHtml(this.dangerousUrl);
  }
}
Run Code Online (Sandbox Code Playgroud)