Шаблон на компонент в друг компонент

Имам масив от компоненти, съхранени в главния компонент. Те са различни видове. Използвах директиви 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. Има ли някаква възможност да го направя по-генеричен?


person mankers    schedule 05.12.2016    source източник
comment
Възможен подход stackoverflow.com/questions/36325212/   -  person Günter Zöchbauer    schedule 05.12.2016


Отговори (1)


Имам 3 решения в зависимост от това, което се опитвате да постигнете.

  1. Пуснете изразите ngSwitch и обвийте шаблона на всеки компонент в *ngIf оператор. Ще трябва да създадете услуга, която да съдържа наблюдаемост на данните, използвани за определяне кои ще бъдат показани (т.е. логиката, използвана във вашия оператор swicth). след това ще инжектирате тези данни във всеки.
  2. Вариант е и ъгловата фреза.
  3. (Подозирам, че това е най-доброто решение) В зависимост от това колко дълъг е вашият списък с компоненти, можете просто да ги изброите всички и да добавите *ngIf към всеки и запазване на логиката на компонента.

Изобщо важен ли е редът на компонентите в масива? Също така, колко компонента има?

person Nate May    schedule 07.12.2016