[英]How to display a HTMLElement from a variable in an Angular component?
我将动态生成的HTMLElement
存储在组件 class 的变量中。 我想展示它,但我不知道这怎么可能。 我试过这样:
在组件 class 内部:
elem: HTMLElement;
在模板中:
<ng-container *ngTemplateOutlet="elem"></ng-container>
我收到此错误:
TypeError: templateRef.createEmbeddedView is not a function
如果您有一个裸HTMLElement
,那么您无能为力。 NgTemplateOutlet
需要一个TemplateRef
,而不是一个普通的HTMLElement
object。
要将 HTML 元素插入 DOM,只需使用适当的 DOM 方法即可。 您将使用哪一个完全取决于您要使用它的地方。
例如,你可以做
const wrapper = document.querySelector('div.wrapper')
wrapper.append(el) // pass in your element
您还可以通过在模板中添加 Angular 引用来以更 Angular 的方式获取对包装器的引用,方法是在您想要 select 的元素上,
<div class="wrapper" #wrapper></div>
并在您希望 Angular 将ElementRef
分配给的属性上使用ViewChild
装饰器。
@ViewChild('wrapper', { static: true, read: ElementRef })
public wrapperElRef: ElementRef<HTMLDivElement>
一旦视图被初始化(当发生这种情况时你会通过ngAfterViewInit
钩子得到通知),你可以通过访问 `.nativeElement 来获取 HTML 元素:
this.wrapperElRef.nativeElement //: HTMLDivElement
你现在可以做
this.wrapperElRef.nativeElement.append(elem)
也就是说,除非您知道自己在做什么(通常包装现有库或与您还不能完全重构的现有大型系统集成)
大多数情况下,这取决于您如何创建 html。 我建议在注释中指定您在哪里接收包含HTMLElement
的变量,以便我可以为您提供最有效的方法。
但通常 - 尝试在父元素中使用innerHTML
绑定。
Typescript:
public elem: HTMLElement;
public getElement(): string {
return this.elem.innerHTML;
}
HTML:
<div innerHTML="getElement()"></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.