【发布时间】:2020-03-08 04:15:56
【问题描述】:
我正在尝试将 html 从 editpage.ts 添加到 editpage.html
editpage.ts
var strHTML = '<p [contentEditable]="contentEditable" >abc<p>';
this.possibleHTML = strHTML;
this.possibleHTML = this.possibleHTML.map(value => this._sanitizer.bypassSecurityTrustHtml(value));
editpage.html
<div id="main-wrapper">
<content *ngIf="possibleHTML">
<div [innerHtml]="possibleHTML"></div>
</content>
</div>
当这个被插入,然后在开发者工具中,它看起来像这样
<h1 _ngcontent-c2>Hii<h2>
我的[contentEditable]="contentEditable" 属性消失了。我需要动态注入 HTML,我需要这个属性来更改文本。
编辑
我的component.ts:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-filemanager',
templateUrl: './filemanager.component.html',
styleUrls: ['./filemanager.component.css']
})
export class FilemanagerComponent implements OnInit {
constructor() { }
ngOnInit() {
this.document.getElementById("main-wrapper").innerHTML += "<p [contentEditable]="contentEditable" >abc<p>";
}
}
现在我想要的是,我的属性不应该丢失。
【问题讨论】:
-
使用
[innerHTML]="..."添加的 HTML 会被 Angular 忽略。你永远无法让 Angular 解析值绑定或事件绑定,或者为以这种方式添加的内容创建组件。如果您希望 Angular 将字符串作为模板内容动态处理,您可以在运行时创建一个组件并 JIT 编译它。 -
下面的例子正在运行
-
它没有使用
[innerHTML]="..."添加任何特定于Angular的东西
标签: angular typescript dom