Angular中如何渲染属性值内的HTML标签,使NO显示为粗体?
解决Angular中HTML标签无法渲染的问题
- 问题根源:Angular的插值表达式
{{}}会自动转义HTML内容(目的是防范XSS攻击),所以<b>这类标签会被当成普通文本显示,不会生效。 - 解决办法:用Angular的
[innerHTML]属性绑定替换插值表达式,它会解析并渲染HTML标签。
代码示例
- message.properties.ts里的定义保持不变:
export const message = { 'comment.require.error2': 'The response has been chosen as <b>NO</b>, you must provide comments to support it' };
- HTML模板中修改绑定方式:
<div [innerHTML]="message['comment.require.error2']"></div>
注意:如果渲染的内容来自不可信的外部来源,直接用
[innerHTML]可能有XSS风险,需要先做安全过滤;但如果是你自己定义的常量内容,就不用顾虑这个问题。
内容的提问来源于stack exchange,提问作者Kiara
相关产品推荐
相关产品推荐

