gpt4 book ai didi

javascript - 使用 Angular 2+ [innerHTML] 添加包含样式属性的 html

转载 作者:行者123 更新时间:2023-11-30 08:25:40 25 4
gpt4 key购买 nike

我正在使用 Angular 2+ [innerHTML] 输入来插入 HTML 格式,包括样式标签。

在我的模板中,我有类似的东西:

<span [innerHTML]="someVar"></span>

在我的组件中,我有:

someVar = `<span style="background-color:#990000">test</span>`;

我收到警告:

WARNING: sanitizing HTML stripped some content (see http://g.co/ng/security#xss).

在输出中,插入的跨度完好无损,减去了样式属性。

所以我使用了这篇文章中的管道:

https://stackoverflow.com/questions/37076867/

看起来像:

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

@Pipe({name: 'safeHtml'})
export class SanitizeHtml implements PipeTransform {
constructor(private sanitizer: DomSanitizer) {}

transform(html): SafeHtml {
// return this.sanitizer.bypassSecurityTrustStyle(style);
return this.sanitizer.bypassSecurityTrustHtml(html);
// return this.sanitizer.bypassSecurityTrustScript(value);
// return this.sanitizer.bypassSecurityTrustUrl(value);
// return this.sanitizer.bypassSecurityTrustResourceUrl(value);
}
}

虽然我不确定我是否以正确的方式使用它,但这与以前没有区别......

如何让 Angular 使用 innerHTML 保留我的样式属性?

最佳答案

你快到了。您只需要确保将管道用于 HTML 字符串即可。

示例管道:

import {Pipe} from '@angular/core'; 
import {DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl} from '@angular/platform-browser';
@Pipe({
name: 'safe'
})
export class SafePipe {

constructor(protected sanitizer: DomSanitizer) {}

transform(htmlString: string): any {
return this.sanitizer.bypassSecurityTrustHtml(htmlString);
}
}

示例用法:

<span [innerHTML]="someVar | safe"></span>

希望对您有所帮助!

关于javascript - 使用 Angular 2+ [innerHTML] 添加包含样式属性的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46149510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com