2017-05-14 2 views
0

다른 유형의 개체가 있습니다. 그럼에도 불구하고 모든 유형을 내 Angular2 구성 요소 하나에 표시하려고합니다.폴더 구조에 따라 코드 줄을 추가하십시오. - 프리 컴파일러?

in for-loop: 
<div [ngSwitch]="Type"> 
    <c-test *ngSwitchCase="'Test'"></c-test> 
    <c-test2 *ngSwitchCase="'Test2'"></c-test2> 
    <etc> 
</div> 

은 시간이 지남에 내 응용 프로그램을 확장 할 수 오브젝트의 새로운 "유형"추가 : 는 여기에 내가 그것을 위해 사용하는 코드입니다. 위의 코드를 다른 장소에서 사용하기 때문에 추가 된 각 유형에 대해이 모든 장소에 행을 추가하고 싶지 않습니다. C++ 프리 컴파일러와 비슷한 것을 사용하여 내 폴더 구조를 검토하고 이에 따라이 행을 추가하는 방법이 있습니까?

예 : 다음과 같은 폴더 구조가 있다고 가정 해 보겠습니다.

<div [ngSwitch]="Type"> 
    <precompile *ngFor="some looping through folders">  
     <"c-$FoundFolder" *ngSwitchCase="'$FoundFolder'"><"c-$FoundFolder"> 
    </precompile> 
</div> 

는 결과 : 내 코드에서

Objects 
|- TypeA 
|- TypeB 
|- etc 

, 그때 이런 걸해야합니다 내가 아는

<div [ngSwitch]="Type"> 
    <c-TypeA *ngSwitchCase="'TypeA'"></c-TypeA> 
    <c-TypeB *ngSwitchCase="'TypeB'"></c-TypeB> 
    <etc *ngSwitchCase="'etc'"></c-etc> 
</div> 

을 그 나는이 양식에 존재하지 않는 원하는,하지만 비슷한 것을 성취 할 수있는 방법이 있습니까? 그렇다면 어떻게 그렇게 할 수 있습니까?

답변

1

아래 접근법은 요구 사항에 따라 정확하게 작동하지 않습니다. 그러나 기본 의도는 응용 프로그램에 추가 된 새 구성 요소를 기반으로 렌더링보기를 변경하지 않고 나중에 동적으로 새 구성 요소를로드하는 것입니다.

https://angular.io/docs/ts/latest/cookbook/dynamic-component-loader.html

그냥, 그냥 당신이 새로운 각 구성 요소에 대한 에서 추가 항목 entryComponent을해야, 컴퍼넌트의 새로운 선언 동일하게 유지됩니다 이것에 각 웹 사이트에 대한 좋은 기사가있다 같은 모듈 파일에 추가 된 새로운 구성 요소가 선언된다 :

entryComponents: [ HeroJobAdComponent, HeroProfileComponent ],

+0

가 대단히 감사합니다,이게 내가하고 싶었던 것을 매우 가까운 것 같다! 나는 그것을 시험해보고 그것이 어떻게 진행되는지에 대해 논평 할 것이다. – user2065501

+0

이 방법으로 가지고있는 작은 문제가 있습니다. 문서에서는 가능한 모든 구성 요소를 해당 데이터로 반환하는 함수를 사용합니다. 그러나, 나는 이름 만 알고 (또는 비슷한) 구성 요소를로드하고 싶습니다. 기본적으로 문서 예제를 보려면 : ', 광고가 이미로드되어있는 곳에서, 다음과 같이하고 싶습니다 :'', 여기서 MyAdType은 문자열 또는 파일이거나 add-banner에 의해 구성 요소를로드하는 데 사용되는 모든 것입니다. 그게 가능하니? – user2065501

+0

샘플 플 런커를 만들고 원하는 것을 설명해 주시겠습니까? 그럼 내가 너를 도울 수있을거야. 감사! – Lambo14

관련 문제