Angular 10:如何创建动态组件/html?
Posted
技术标签:
【中文标题】Angular 10:如何创建动态组件/html?【英文标题】:Angular 10: how to create dynamic Component / html? 【发布时间】:2020-12-29 21:44:03 【问题描述】:2 个问题:
<div> someData </div>
- 如何让 someData
转成html?
<div> MyComponentClass </div>
- 如何让它创建一个组件 MyComponentClass 的实例并将其放入 div 中?
对于问题 1,我想我需要一种方法来访问 DOM 元素,然后自己注入它。 对于问题 2,我不知道,但它会很有用。
【问题讨论】:
【参考方案1】:-
问题:
您可以将字符串/html 变量绑定到 [innerHTML] 属性绑定。
<div [innerHTML]="theHtmlString"></div>
如果 html 不起作用,您需要注入 DomSanitizer 来告诉 Angular html 是安全的。
constructor(private sanitizer:DomSanitizer)
this.htmlString = this.sanitizer.bypassSecurityTrustHtml(style);
-
问题:
您可以使用 @ViewChild 动态创建组件,并从您的 div 中获取 ViewContainerRef 并使用 componentFactoryResolver:
模板:
<div #yourdiv></div>
组件:
@ViewChild("yourdiv" , read: ViewContainerRef) private vcr: ViewContainerRef;
constructor(private componentFactoryResolver: ComponentFactoryResolver)
let resolver = this.componentFactoryResolver.resolveComponentFactory(DynamicComponent);
let componentFactory = this.vcr.createComponent(resolver);
【讨论】:
谢谢。 1 容易理解。 2 我真的不明白那里发生了什么。我想做的只是模拟你可以在 React 中轻松做的事情:将子组件放入自定义组件中:以上是关于Angular 10:如何创建动态组件/html?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Angular 2 组件动态添加 innerHTML
如何知道动态创建的 Angular 组件何时可以在 DOM 中请求?