2017-04-17 1 views
0

그래서 내 구성 요소 중 하나에 탭이 있습니다. 각각의 탭, 즉 TabOneComponent ... TabTenComponent에 자신의 구성 요소를 넣습니다. 그런 다음이를 표시 나는이처럼 그들을 렌더링 컴포넌트 내부 배열에 넣어하기로 결정합니다 :안쪽 부분 2 렌더링 구성 요소가 ng 용

<div class='tab-content'> 
    <div *ngFor="let t of tabs" class='tab-pane {{ t.class }}' id='{{ t.id }}' [innerHTML]="t.template | htmlSanitizer"> 
    </div> 
<div> 

참고 :

tabs: Array<any> = [ 
    {label: 'Tab One', id: 'tabone', class: 'active', template: '<tab-one></tab-one>'} 
    ... 
    {label: 'Tab Ten', id: 'tabten', template: '<tab-ten></tab-ten>'} 
] 

그런 다음 나는이 같은 ngFor을 만들었을 표시하기 : htmlSanitizer는 내가 만든 파이프이며 작동합니다.

여기서 문제는 각 구성 요소의 템플릿이 렌더링되지 않는다는 것입니다. 그래서 그것을 할 수 있습니다 또는 정말 개별적으로 넣어해야합니까 :

<div class="tab-pane active" id="tabone"> 
    <tab-one></tab-one> 
</div> 
... 
<div class="tab-pane" id="tabten"> 
    <tab-ten></tab-ten> 
</div> 

미리 감사드립니다!

내가 요소 탭에서 크롬에서 검사 편집, 나는 <tab-ten></tab-ten>-<tab-one></tab-one>은 그냥 실제 구성 요소 템플릿을 렌더링하지 않는 사실이 있음을 참조하십시오.

+0

체크 아웃 http://stackoverflow.com/questions/33472297/how-to-translate-html-string-to-real-html-element-by-ng-for-in-angular-2 – Dan

+0

구성 요소에 파이프를 선언했는지 확인하십시오. – Dan

+0

답변보기 http://stackoverflow.com/questions/36325212/angular-2-dynamic-tabs-with-user-click-chosen-components/36325468#36325468 – yurzui

답변

0

이것이 작동하는지 확인하십시오.

<div class="tab-content"> 

    <div *ngFor="let t of tabs"> 
     <div [attr.class] = "t.class tab-pane" 
      [attr.id] = "t.id" 
      [innerHTML] = "t.template | htmlSanitizer"> 
     </div> 
    </div> 

</div> 
+0

아니요 그렇지 않습니다. 클래스와 ID를 각도 속성으로 변경하는 목적은 무엇입니까? 정상적인 HTML 클래스와 ID를 사용해도 제대로 작동합니다. 작동하지 않는 innerHTML입니다. 내 업데이트 된 게시물을 참조하십시오. – Jed