动态ddd组件按名称从api到Angular 2中的页面

时间:2017-12-24 17:36:05

标签: angular angular-components

我是一个Angular初学者,并且有一个项目,可以使用从web api返回的组件名称,基于某些规则在页面上动态添加组件。基本上,用户可以单击按钮添加新组件A,B,C,D等。然后,我必须检查他们是否可以基于先前添加的组件添加该组件,然后添加组件。由于组件是未知的,我们在DB中定义了名称,但是我在Angular 2中看到了很多不同的,有些令人困惑的方法。

我在网上看过几个例子和plunkr,用于使用 ComponentFactoryResolver 动态地将组件添加到角度页面,但是它需要在父类中预定义子组件,但在我的情况下我不能去做。大多数示例都需要对子组件名称进行硬编码。有什么方法可以引用以前动态添加的组件,还可以在Angular 2中通过api接收的名称添加新组件?我不确定这是否真实。

1 个答案:

答案 0 :(得分:0)

只要您引用创建它的ViewContainerRef,就可以实际知道以前创建的组件是什么。您还可以创建一个服务,该服务将存储所创建组件的名称,并将您的逻辑基于该引用,因此该部分没什么大不了的。

但是,你必须告诉Angular某些组件未在你的标记中声明并且将在运行时创建,这就是为什么你必须传递这些组件{{1} } es到您实例​​化动态组件的组件的class属性。如果你不这样做,Angular就会放弃它们,也不会意识到它们确实存在。

所以,简短回答:

  1. ,可以根据与先前创建的组件相关的自定义逻辑动态创建组件。
  2. ,可以根据API调用中收到的名称创建组件,但是,这些组件必须先在Angular应用程序中定义,并且必须将它们作为{{{ 1}}到实例化它们的组件。
  3. 怎么做?查看this answer,它基本上抽象了创建动态组件的逻辑,因此您只需传递组件名称和道具。
  4. 如果您在第一点需要帮助,请尝试设置一个快速示例,我可以提供帮助。