2016-12-05 55 views
0

我有存储在主要组件中的组件数组。他们是不同的类型。我用ngFor和ngSwitch指令来显示它们全部。另一个组件内部的组件模板

<div *ngFor="let component of components" 
     [ngSwitch]="component.id"> 
     <component-a *ngSwitchCase="1"></component-a> 
     <component-b *ngSwitchCase="2"></component-b> 
     <component-c *ngSwitchCase="3"></component-c> 
</div> 

当我添加新的类型时,这种方法是相当有问题的,例如, ComponentX,因为我必须添加另一个ngSwitch案例。有没有可能使它更通用?

+0

一种可能的方法http://stackoverflow.com/questions/36325212/angular-2-dynamic-tabs-with-user-click-chosen-components/36325468#36325468 –

回答

0

我有3个解决方案,这取决于你试图达到的目标。

  1. 删除该ngSwitch陈述和包装每个组件的模板在*ngIf声明。您必须创建一个服务来存放用于确定将显示哪些数据的数据(即您的swicth语句中使用的逻辑)的可观察值。你会将这些数据注入到每个数据中。
  2. 角形路由器也是一种选择。
  3. (我怀疑这是最好的解决方案)根据组件列表的时间长短,您可以将它们全部列出并向每个组件添加*ngIf并将组件逻辑保留。

数组中组件的顺序是否重要?此外,有多少组件?