【发布时间】:2017-11-17 07:20:36
【问题描述】:
我只需要用id"main-wrapper" 将HTML 注入到一个div 中,所以在我的component.ts 中我正在使用此代码
import { Component, OnInit, ElementRef,Renderer2,Inject } from '@angular/core';
import { Pipe } from '@angular/core';
import { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser';
@Component({
selector: 'app-editsection',
templateUrl: './editsection.component.html',
styleUrls: ['./editsection.component.css']
})
export class EditsectionComponent implements OnInit {
...//some code
constructor(
@Inject(DOCUMENT) private document: any,
private route: ActivatedRoute,
private elRef: ElementRef,
private el: ElementRef,
private _sanitizer:DomSanitizer
) { }
ngOnInit() {
var strHTML = '<p>abc<p>';
this.document.getElementById("main-wrapper").innerHTML += this._sanitizer.bypassSecurityTrustHtml(strHTML);
...
}
}
当我运行代码时它说: SafeValue 必须使用 [property]=binding: abc
(见http://g.co/ng/security#xss)
为什么我需要实现这个 - 因为当我注入 innerHTML 时,我失去了一个属性 contenteditable="true"
在应用 innerHTML 之前,我的代码如下所示:
<h1 _ngcontent-c2 contenteditable="true">Hii<h2>
应用innerHTML后变成:
<h1 _ngcontent-c2>Hii<h2>
请帮我解决问题
【问题讨论】:
标签: angular typescript dom angular-dom-sanitizer