Primeng Datatable中的Angular 2 Pipe会出现安全错误

时间:2016-12-27 08:48:13

标签: angular primeng

我有一个解码html代码的管道。例如,<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);
  }
}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

safeHtml或消毒剂直接与{{}}一起使用是没有意义的,因为结果是字符串化的,它会撤消| safeHtml的应用。

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

也许你的意思是

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