首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角: sanitizer.bypassSecurityTrustHtml不呈现属性(单击)

角: sanitizer.bypassSecurityTrustHtml不呈现属性(单击)
EN

Stack Overflow用户
提问于 2022-06-24 15:59:48
回答 1查看 33关注 0票数 0

我尝试呈现一个按钮,它可以正常工作,但是当我单击该按钮时,它不会执行alertWindow函数,帮助!:

app.component.ts:

代码语言:javascript
复制
import { 
  Component, 
  ElementRef, 
  OnInit,  
  ViewEncapsulation } from '@angular/core';

import { DomSanitizer, SafeHtml } from "@angular/platform-browser";

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
  encapsulation: ViewEncapsulation.ShadowDom,
})

export class AppComponent implements OnInit {

 public content: SafeHtml;

 constructor(private sanitizer: DomSanitizer) {}

 async ngOnInit() { this.renderButton(); }

 alertWindow() { alert("don't work"); }

 renderButton() {
   
 this.content = 
 this.sanitizer.bypassSecurityTrustHtml(`
  <button (click)='connectWallet()' class="button">
   Connect your wallet
  </button>`);      
 }

app.component.ts;

代码语言:javascript
复制
<div [innerHTML]="content"></div>
EN

回答 1

Stack Overflow用户

发布于 2022-06-24 16:36:06

解决方案

根据我的理解,您想在运行时动态显示HTML吗?然后,解决方案是使用ComponentFactoryResolverViewContainerRef

如果你能提供更多的细节,你想要达到的目标,这样人们就可以指导你,这样会更好。

为什么不起作用?

它不起作用,因为它超出了角度,当您使用innerHTML时,您传递给它的是纯香草HTML和JavaScript。

试试这个例子

代码语言:javascript
复制
(window as any).alertWindow = function () {
  alert("don't works");
};

@Component({...})
export class AppComponent {
  ...

  renderButton() {
    this.content = this.sanitizer.bypassSecurityTrustHtml(`
    <button onclick='alertWindow()' class="button">Connect your wallet</button>
  `);
  }
}

它起作用了吗?

如您所见,我已将alrertWindow函数移出组件的类,并添加到window变量中,并将(click)更改为onclick

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72746632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档