首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angular2:将动态组件作为容器的子级插入到DOM中

Angular2:将动态组件作为容器的子级插入到DOM中
EN

Stack Overflow用户
提问于 2016-06-29 16:03:30
回答 6查看 45.8K关注 0票数 37

有没有办法将组件作为Angular 2中DOM标签的(而不是兄弟)动态插入?

有很多示例可以将动态组件作为给定ViewContainerRef的标记的兄弟项插入,例如(对于RC3):

代码语言:javascript
复制
@Component({
  selector: '...',
  template: '<div #placeholder></div>'
})
export class SomeComponent {
  @ViewChild('placeholder', {read: ViewContainerRef}) placeholder;

  constructor(private componentResolver: ComponentResolver) {}

  ngAfterViewInit() {
    this.componentResolver.resolveComponent(MyDynamicComponent).then((factory) => {
        this.componentRef = this.placeholder.createComponent(factory);
    });
  }
}

但这会生成类似于以下内容的DOM:

代码语言:javascript
复制
<div></div>
<my-dynamic-component></my-dynamic-component>

预期结果:

代码语言:javascript
复制
<div>
    <my-dynamic-component></my-dynamic-component>
</div>

使用SomeComponentViewContainerRef具有相同的结果,它仍然将生成的组件作为兄弟项插入,而不是子项。我可以接受这样的解决方案:模板为空,并且动态组件被插入到模板中(在组件选择器标记内)。

当使用ng2-dragula这样的库从动态组件和benefit from the model updates列表中拖动时,DOM结构非常重要。额外的div在可拖动元素的列表中,但在模型之外,这打破了拖放逻辑。

有些人说这是不可能的(c.f. this comment),但这听起来像是一个非常令人惊讶的限制。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38093727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档