2017-03-06 3 views
1


아래에서 볼 수 있듯이 클래스 B와 C에 다른 템플릿이 있습니다.Angular2 : 템플릿을 반복하는 방법

@Component({}) 
export abstract class A {} 

@Component({ 
    template: `BBBBBB` 
}) 
export class B extends A{} 

@Component({ 
    template: `CCCCCC` 
}) 
export class C extends A{} 

내 주요 구성 요소에서 A의 배열을 반복하고 해당 템플릿을 HTML에 삽입해야합니다.

@Component({ 
    template: ` 
    <div> 
    ...???... 
    </div> 
    ` 
}) 

export class MrModul { 
    anArray: A[] = Array(); 
    constructor(){ 
     ... 
     //filling up the Array 
     ... 
    } 
} 

그래서 '???' 적절한 템플릿으로, 내가 배열을 반복하면서,하지만 난 정말 어떻게 모르겠다. 내가 셀렉터를 사용한다면 실제로 어떤 셀렉터를 사용해야할지 모르겠습니다. 그러나 내가 *ngFor을 사용하면 어떤 속성을 사용해야하는지 알 수 없습니다.
나도 도와 줄 수있어? 고마워!

보너스 정보 : 목표는 위젯 시스템과 같은 것입니다. 임의의 유형을 선택하여 추가 할 수 있습니다. 즉, 위젯이라고 부르면 새로운 div에 넣습니다. 이 배열은 새로운 위젯을 저장하기위한 것입니다.

+0

배열에는 어떤 데이터가 들어 있습니까? 어떤 정보를 바탕으로 어떤 구성 요소를 표시 하시겠습니까? –

+0

나는 귄터에 동의합니다. 배열에 대한 추가 정보가 필요합니다 – yurzui

+0

Aray에 B 또는 C가 포함되어 있습니다. 그래서 구성 요소 자체가 필요합니다. 예를 들어 B는 이미지를 의미 할 수 있고 C는 그래프 등이 될 수 있습니다 ... 이러한 템플릿은 별도의 템플릿이 필요합니다. – HPeter

답변

1
<ng-content *ngFor="let item of anArray"> 
    <my-a *ngIf="item.compo == 'a'></my-a> 
    <my-b *ngIf="item.compo == 'b'></my-b> 
    <my-c *ngIf="item.compo == 'c'></my-b> 
</ng-content> 
+0

좀 더 유연한 것이 필요합니다. 실제로 얼마나 많은 유형이 될지는 모르지만 별도의 if-s를 많이 작성하는 것을 피하십시오. – HPeter

+0

그 추가 정보를 넣을 수 있다면 좋을 것입니다. 너의 질문. 좀 더 유연한 접근 방식은 http://stackoverflow.com/questions/36325212/angular-2-dynamic-tabs-with-user-click-chosen-components/36325468#36325468 –

+0

입니다. 답변으로 표시해 드리겠습니다. 이 답변을 바탕으로 솔루션을 만들었습니다. 방금 래퍼 구성 요소를 작성한 다음 ngSwitch를 사용했습니다. 고마워! – HPeter

관련 문제