angular - 如何将动态创建的组件插入到模板中
问题描述
我有使用 ComponentFactoryResolver 动态创建的组件。我想把它插入到模板中。我尝试使用 templateRef 或 viewContainerRef 但没有一个成功。
ComponentOutlet 需要组件类而不是实例, ViewContainerRef 需要模板引用。它们都不适用于创建的实例。
如何使它与创建的组件实例一起工作?有什么办法吗?
解决方案
insert
我使用ViewContainerRef 的方法解决了我的问题
解决方案
您需要对视图容器的引用:
export class ExampleComponent implements AfterViewInit {
@ViewChild('contentElement', { read: ViewContainerRef }) contentElement: ViewContainerRef;
constructor(
private componentFactoryResolver: ComponentFactoryResolver,
private ref: ChangeDetectorRef
) {}
ngAfterViewInit() {
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(
yourComponent
);
const contentElement = this.contentElement;
contentElement.clear();
const component = contentElement.createComponent(componentFactory);
this.ref.detectChanges();
}
}
<ng-template #contentElement></ng-template>
推荐阅读
- regex - 正则表达式匹配 VScode Snippets 中的 TextMate 变量
- amazon-web-services - Terraform AWS 客户端VPN
- css - 如何放置指向按钮的链接
- python - 如何获取子笔记本的 Databricks 笔记本上下文?
- c++ - 将 unique_ptr()::get() 返回的原始指针传递给以双指针作为函数参数的函数
- entity-framework - 一般检索表 ID
- python - 如何按列的索引仅从该列中提取数字?
- python - 如何在 Python 中更改内部字典
- optimization - 英特尔 fortran 优化可防止临时阵列消除 (FTAE)
- javascript - 使用javascript根据动态值更改背景颜色