4

我正在开发一个应用程序,我从服务器获取 html 格式的响应。我正在使用 DomSanitizer 的 bypassSecurityTrustHtml 并将经过清理的 html 添加到我的组件 () 中。

我的问题是响应中的一些元素包含标记以指示可以从元素构建链接,例如:

<div thisIsActuallyaLink linkParam1="foo" linkParam2="bar">clickHere</div>

我想创建一个应用于innerhtml的指令,但是在显示html时,它没有用我的指令编译...

如果有人想知道为什么没有在服务器端转换 html:响应在多个应用程序中使用,并且链接必须具有不同的相对 url,具体取决于应用程序:-(

4

2 回答 2

4

这根本不可能[innerHTML]="..."
您可以在运行时编译组件以获取动态 HTML 的组件和指令。

请参阅如何使用/创建动态模板来使用 Angular 2.0 编译动态组件?更多细节。

于 2017-10-03T10:26:46.567 回答
0

也许尝试使用管道,像这样:

import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';

@Pipe({ name: 'safeHTML' })
export class SafeHtml implements PipeTransform {

    constructor(private sanitizer: DomSanitizer) { }

    transform(html: string) {
        return this.sanitizer.bypassSecurityTrustHtml(html)
    }
} 

然后 [innerHtml]="htmlExample | safeHTML"

于 2017-09-14T10:59:54.250 回答