Angular2 innerHtml绑定删除样式属性
这个问题在这里已经有了答案:
你可以利用DomSanitized
来避免它。 最简单的方法是创建自定义管道,如:
import { DomSanitizer } from '@angular/platform-browser'
@Pipe({ name: 'safeHtml'})
export class SafeHtmlPipe implements PipeTransform {
constructor(private sanitized: DomSanitizer) {}
transform(value) {
return this.sanitized.bypassSecurityTrustHtml(value);
}
}
所以你可以使用它:
<div [innerHtml]="html | safeHtml"></div>
Plunker例子
通过完成所需的进口,我改进了yurzui的例子:
import {DomSanitizer} from '@angular/platform-browser';
import {PipeTransform, Pipe} from "@angular/core";
@Pipe({ name: 'safeHtml'})
export class SafeHtmlPipe implements PipeTransform {
constructor(private sanitized: DomSanitizer) {}
transform(value) {
return this.sanitized.bypassSecurityTrustHtml(value);
}
}
我还必须在我的app.module.ts文件中添加该类
import ...
import {SafeHtmlPipe} from "./pipes/safehtml.pipe";
@NgModule({
declarations: [
AppComponent,
...,
SafeHtmlPipe <--
],
imports: [...],
providers: [...],
bootstrap: [AppComponent]
})
export class AppModule {
}
Angular 2旨在提供更多的声明性方法,因此直接操纵HTML经常令人沮丧。
我相信(几乎)所有的HTML操作都会被修补以通过角度的DOM清理进行过滤。 正如你可以想象的, style
属性并没有为span元素列出白名单,实际上,span当前没有允许的属性。
上一篇: Angular2 innerHtml binding remove style attribute
下一篇: Difference between declarative and imperative in React.js?