Primeng 数据表内的 Angular 2 Pipe 出现安全错误

标签 angular primeng

我有一个可以解码 html 代码的 Pipe。例如<p>test</p>变成test

当我在列中使用它时,它不显示数据,而是显示 ' SafeValue must use [property]=binding: XXXX (see http://g.co/ng/security#xss) '

数据表

<p-dataTable [value]="toShowSubVragen">

   <!-- WITH Pipe, DOESN'T WORK
   SHOWS: SafeValue must use [property]=binding: XXXX (see http://g.co/ng/security#xss)-->
    <p-column field="tekst" header="With Pipe">
        <template let-col let-vraag="rowData" pTemplate="body">
            <span>{{vraag[col.field] | safeHtml}}</span>
        </template>
    </p-column>

    <!-- WITHOUT Pipe, WORKS
   SHOWS: the tekst data..  -->
    <p-column field="tekst" header="Without Pipe">
        <template let-col let-car="rowData" pTemplate="body">
            <span>{{car[col.field]}}</span>
        </template>
    </p-column>

</p-dataTable>

管道

@Pipe({ name: 'safeHtml'})
export class SafeHtmlPipe implements PipeTransform  {
  constructor(private sanitized: DomSanitizer) {}
  transform(value) {
    return this.sanitized.bypassSecurityTrustHtml(value);
  }
}

我该如何解决这个问题?

最佳答案

直接使用 safeHtml 或 sanitizer 与 {{}} 是没有意义的,因为结果被字符串化,这会撤消 | 的应用。 safeHtml.

<span>{{vraag[col.field] | safeHtml}}</span>

也许你的意思是

<span [innerHTML]="vraag[col.field] | safeHtml"></span>

关于Primeng 数据表内的 Angular 2 Pipe 出现安全错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41341860/

相关文章:

Angular 11 没有运行 ngcc

Angular `ng-content` 未按预期使用 primeNg 表

Angular2RC4-Primeng 菜单栏 routerlink 在点击后不转到我的路线

javascript - typescript 'is not a module' 错误

angular - *ngIf 基于另一个 *ngIf

Angular CLI Css 注入(inject)而不是重新加载

javascript - 从 PrimeNG 覆盖 'MultiSelect' 组件中的函数

angular - 单击选项卡时,我需要在 angular2 中加载特定组件

angular - 移除芯片时未触发更改时的primeNG 多选

angular - 使用 Angular-CLI 安装第 3 方应用程序