NgSwitch或ComponentFactoryResolver?

时间:2016-10-12 14:57:29

标签: angular

我正在编写一个列出一些用户的应用程序,并在点击用户时显示信息页面。用户具有不同类型(约20种类型),并且详细信息页面在布局和功能方面对于每种用户类型都不同。

我有一个主DetailsComponent和20个特定组件(Type1DetailsComponentType2DetailsComponent等),必须显示在主DetailsComponent内。

我想到了两种实现方法:

  1. 使用NgSwitch中的DetailsComponent选择特定组件
  2. 使用ComponentFactoryResolverViewContainerRef创建所需的特定组件,并将其显示在DetailsComponent
  3. 第一种方法要求SpecificDetailsComponent中列出所有NgSwitch,从而降低可扩展性。

    第二种方法似乎更好,但它有一些缺点:

    • 需要一个目标元素来放置动态创建的组件。新组件不能替换目标元素,而是放在它之后。这看起来很混乱。
    • 创建组件时,Angular不会自动设置@Input和@Output。

    我有什么办法可以改进第二种方法吗?

    有没有更好的方法来实现目标?

1 个答案:

答案 0 :(得分:1)

我相信目标元素确实被替换了,但是不管怎样,它只是一个错误的元素。我认为,即使组件很复杂,CFR也会快50%。