Plunkr 链接到我正在尝试做的事情-> https://plnkr.co/edit/mC8jGYROlpqFpnjTCQKr?p=preview
我的目标是能够从工具菜单向左拖到舞台上。在“放置”时,所选项目应嵌套在舞台内。
我搜索了文档和博客。我已经看到“CreateEmbeddedView”似乎是我应该使用的。
根据 Angular2 文档,以下是我正在寻找的内容:
createEmbeddedView(templateRef: TemplateRef, context?: C, index?: number) : EmbeddedViewRef
但是似乎找不到一个实际的例子。我使用的是“src/designer-droppable.directive.ts”中的以下内容:
addWidget(textWidget: { new(): TextWidget }): ComponentRef<TextWidget>{
let dialogComponentFactory =
this.componentFactoryResolver.resolveComponentFactory(textWidget);
let dialogComponentRef = this.viewContainer.createComponent(dialogComponentFactory, this.viewContainer.length);
//let tw = TemplateRef<{new(): TextWidget}>;
//let dialogComponentRef = this.viewContainer.createEmbeddedView(TemplateRef<new() => TextWidget>);
return dialogComponentRef;
}
但是,这会将一个组件作为同级添加到“viewContainerRef”而不是嵌入它。即在 plnkr 中,如果您将某些东西拖到舞台上,它将被添加到舞台的右侧,而不是被嵌入。
我尝试使用 CreateEmbeddedView,但我不清楚如何动态定义 TemplateRef。
我已经看到很多关于动态组件加载器的过时文档,这些文档已经被工厂弃用了。我所缺少的任何帮助都会很棒。任何活生生的例子都会很棒。
谢谢你。