【发布时间】:2021-02-09 20:42:13
【问题描述】:
您好,我正在为我的 Web 应用程序使用 Angular 5。我的用例是从 Java 服务返回一些动态创建的 html 内容,并在 Angular 组件中使用相同的内容。我能够通过 DomSanitizer 绕过角度安全性,但点击事件仍然无法正常工作。
下面是我的代码。
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import DOMPurify from 'dompurify';
declare var angular: any;
@Pipe({
name: 'safeHtml'
})
export class SafeHtmlPipe implements PipeTransform {
constructor(protected sanitizer: DomSanitizer) {}
public transform(value: any): any {
const sanitizedContent = DOMPurify.sanitize(value);
console.log(sanitizedContent);
return this.sanitizer.bypassSecurityTrustHtml(sanitizedContent);
}
}
这是你用来绕过不受信任的 html 的有角度的 safeHtml 管道。
Component.ts - 用于服务调用
import { Component, OnInit } from '@angular/core';
import {ViewReviewService} from '../../services/view-review-service';
import {Response} from '@angular/http';
@Component({
selector: 'app-sample-hit',
templateUrl: './sample-hit.component.html',
styleUrls: ['./sample-hit.component.css']
})
export class SampleHitComponent implements OnInit {
sampleData: any;
constructor(private viewReviewService: ViewReviewService) { }
ngOnInit() {
this.hitSample();
}
hitSample() {
this.viewReviewService.hitSample().subscribe((res: Response) => {
console.log(res['_body']);
this.sampleData = res['_body'];
});
}
callSampleFunction(value: string) {
console.log('hit hit ' + value);
}
}
This.sampleData = '<a> This is my a tag</a>
<a (click)="callSampleFunction(value1)"> This tag will call function</a>
<a (click)="callSampleFunction(value2)"> This tag will call same function with
different value</a>
<p> other html </a>'
component.html
<div [innerHTML]="sampleData | safeHtml" >
</div>
我还需要做什么。请帮忙?
【问题讨论】:
标签: angular