以编程方式插入不同的 Angular2 组件

Posted

技术标签:

【中文标题】以编程方式插入不同的 Angular2 组件【英文标题】:Insert different Angular2 components programmatically 【发布时间】:2016-05-01 16:46:46 【问题描述】:

我想以编程方式从 JSON 文件中生成由多个不同组件组成的报告,例如:


    components: [UserStatsComponent, ActivityChartComponent, NetworkGraphComponent]

我发现了这个:Angular2: Creating child components programmatically 但我的用例不同,因为我需要表示不同类型的组件,所以我不能在模板中使用 ngFor,因为不是每个组件都有相同的指令。

我是 Angular2 的新手,所以我真的不知道如何解决这个问题:首先我想到了组件继承,但看起来 angular2 注释在扩展组件的类时没有被继承。也不知道如何使用组合来解决这个问题。

听说过有关内容标签的一些信息,但不知道它是否与此用例相关。

tldr;如何从数组中动态插入不同的组件?

【问题讨论】:

su pregunta no es clara... 它会造成混乱。你能把它做得更好吗? tldr;如何从数组中动态插入不同的组件? 是否要经过json对象循环,并且要制作遇到的动态组件? 如果你说你不知道你将插入什么子组件,这意味着你说你不知道如何为每个组件定义 @component 装饰器。所以,我认为它看起来并不直接和简单的答案。但希望你可以看看 angular2 的DynamicComponentLoader。但希望其他人现在或以后能够回答。 【参考方案1】:

要动态插入组件,请使用DynamicComponentLoader

@Component(
  selector: 'child-component',
  template: 'Child'
)
class ChildComponent 

@Component(
  selector: 'my-app',
  template: 'Parent (<child id="child"></child>)'
)
class MyApp 
  constructor(dcl: DynamicComponentLoader, injector: Injector) 
    dcl.loadAsRoot(ChildComponent, '#child', injector);
  

【讨论】:

以上是关于以编程方式插入不同的 Angular2 组件的主要内容,如果未能解决你的问题,请参考以下文章

Angular2:使用DynamicComponentLoader动态插入的组件上的双向数据绑定

以编程方式从 Angular 2 中的 json 创建嵌套组件

Angular 2材料垫选择以编程方式打开/关闭

以编程方式添加组件的样式与 XML 布局中的样式不同

PrimeNG 树 - 以编程方式选择 TreeNode

angularjs哪个版本用的多