[英]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.