angular标签使用[innerHTML]并且解决样式问题以及在ts拼写div,html代码时无法在html页面生成问题

话不多说,刚使用angular不久的同学有时脱离不jq 的使用以及习惯在js中拼好div 然后append到html中,所以发现在angular中这个方法行不通,拼好的div 不能在页面生成。下面直接贴代码,有两种方法

<div [innerHTML]="showHtml" > </div>通过这么写就能把showHtml中拼好的div 展示在html页面中,

ts中:
this.showHtml =   '<p style="font-weight: bold;">1、资源下发提醒</p>' 

**html中:**
 <div [innerHTML]="showHtml " ></div>

到这里就发现是不比通过jq 获取节点然后在$("#xx").append("

") 添加到对应的div下面方便的多了。

但也会发现一个问题就是,没有样式,样式不生效,下面就是贴两种方法的代码

方法一:

**ts:**
在使用的页面引入
import { DomSanitizer } from '@angular/platform-browser';
  constructo
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Angular使用innerHTML指令,确实会自动移除style属性,这是因为Angular认为这样可以避免可能的XSS攻击。如果你需要在Angular使用innerHTML指令并保留style属性,可以使用以下两种方法的任何一种: 1. 使用DomSanitizer 可以使用Angular提供的DomSanitizer服务来手动信任HTML字符串。首先,在组件的构造函数注入DomSanitizer服务,然后在template使用管道来信任HTML字符串,例如: ``` import { Component } from '@angular/core'; import { DomSanitizer } from '@angular/platform-browser'; @Component({ selector: 'app-root', template: ` <div [innerHTML]="trustedHtml"></div> ` }) export class AppComponent { trustedHtml: any; constructor(private sanitizer: DomSanitizer) { const html = '<div style="color: red;">Hello, World!</div>'; this.trustedHtml = this.sanitizer.bypassSecurityTrustHtml(html); } } ``` 在这个例子,我们首先注入了DomSanitizer服务,然后在构造函数使用该服务的bypassSecurityTrustHtml方法来信任HTML字符串。最后,在template使用innerHTML指令和trustedHtml变量来渲染HTML。 2. 使用HostBinding 可以使用@HostBinding装饰器来绑定元素的innerHTML属性,并在组件手动设置该属性,例如: ``` import { Component, HostBinding } from '@angular/core'; @Component({ selector: 'app-root', template: ` <div [innerHTML]="html"></div> ` }) export class AppComponent { @HostBinding('innerHTML') html: any; constructor() { const html = '<div style="color: red;">Hello, World!</div>'; this.html = html; } } ``` 在这个例子,我们使用@HostBinding装饰器来绑定元素的innerHTML属性,并在构造函数手动设置该属性。这样,Angular就不会自动移除style属性了。 需要注意的是,使用innerHTML指令需要非常谨慎,因为它可能会导致XSS攻击。因此,除非你确实需要使用innerHTML指令,否则最好避免使用它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值