2016-08-23 4 views
14

사용 Angular 2 ngFor 테이블을 작성 중입니다.ngFor 2 행을 작성하십시오.

내 문제 my data array

<tbody> 
    <tr *ngFor="let element of data; let i = index"> 
     <th>...<th> 
     ... 
     <td>...<td> 
    </tr> 
</tbody> 

문제는 tbody이다 (두 번째 행보다 데이터 접을 다양한 필드를 이용하여) 각각의 요소는 표 2 개 연속 행을 생성한다 elements되도록 포함되어있다 <tr> 옆의 속성을 허용하지 않습니다.

나는 약간 다른 구문이 존재

<tbody> 
    <template *ngFor="let element of data; let i = index"> 
     <tr>...</tr> //row 1 
     <tr>...</tr> //row 2 
    </template> 
</tbody> 

답변

20

처럼 뭔가를 찾고 있어요 :

<template ngFor let-element [ngForOf]="data" let-i="index"> 
    <tr>...</tr> //row 1 
    <tr>...</tr> //row 2 
</template> 

또는

<ng-container *ngFor="let element of data let i=index"> 
    <tr>...</tr> //row 1 
    <tr>...</tr> //row 2 
</ng-container> 

업데이트> = 4.0.0 <template>에 대한 가로 변경되었습니다.3210

<ng-template ngFor let-element [ngForOf]="data" let-i="index"> 
    <tr>...</tr> //row 1 
    <tr>...</tr> //row 2 
</ng-template> 
+0

감사 우는 행동에서 볼 수 있습니다. 왜 구문의 차이인지 이해하지 마십시오. 나는 문서에서 ithis 구문을 보았고 * ngFor가 작동하지 않는 (오타) 그것을 시도했습니다. 또한 내 IDE는이 구문이 "허용되지 않음"이며 자동 완성이 없다고 불평합니다. – royB

+0

https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template IDE에 대해 잘 모르겠습니다. 내 대답에서 보여준 것은 정규 구문입니다. '* ngFor'는 통사론적인 설탕입니다. –

+0

나는 이것을 며칠 전에 필요로했지만 부트 스트랩 3 행과 col-xx-y 클래스를 통해 구현했습니다. 두 번째 행은 첫 번째 행에 의해 활성화되었으며 드릴 다운 테이블 역할을합니다. 기본적으로 나는 프로젝트 전체에서 다양한 방법으로 "분해"하는 것을 피하려고 노력했으며 모든 관점에서 일관되게 유지하려고했습니다. –

1

나는 똑같은 문제에 직면했고 어떤 좋은 해결책도 찾지 못했습니다. 그러나 깊은 reseach 후에 나는이 용기를 발견하고 아주 잘 작동했다. U는

https://plnkr.co/edit/F8ohXKLHvvbHXAqGESQN?p=preview

<ng-container *ngFor="let obj of posts"> 
     <tr> 
      <td> 
       <button (click)="openCloseRow(obj.id)"> 
        <span *ngIf="rowSelected!=obj.id; else close">Open</span> 
         <ng-template #close> 
         <span>Close</span> 
         </ng-template> 
       </button> 
      </td> 
      <td>{{obj.date}}</td> 
      <td> 
       {{obj.subject}} 
      </td> 
      <td>{{obj.numComents}}</td> 
     </tr> 
     <tr *ngIf="rowSelected==obj.id"> 
      <td></td> 
      <td colspan="4"> 
       <table class="table table-striped"> 
        <thead> 
         <tr>         
          <th style="width:15%;">Comment</th> 
         </tr> 
        </thead> 
        <tbody> 
         <tr *ngFor="let q of obj.comments">         
          <td style="width:15%;">{{q}}</td> 
         </tr> 
        </tbody> 
       </table> 
      </td> 
     </tr> 
     </ng-container> 
1
<table> 
     <tr> 
      <th>ID#</th> 
      <th>Name</th> 
      <th>Grade</th> 
      <th>Power</th> 
     </tr> 
     <tr *ngFor="let object_name of object_array"> 
      <td>{{object_name.id}}</td> 
      <td>{{object_name.name}}</td> 
      <td>{{object_name.grade}}</td> 
      <td>{{object_name.power}}</td> 
     </tr> 
</table> 
+0

몇 가지 제한된 즉각적인 도움을 줄 수있는이 코드 조각을 가져 주셔서 감사합니다. * 왜 * 이것이 문제에 대한 좋은 해결책인지를 보여줌으로써 (적절한 설명은 장기적 가치를 크게 향상시킬 것입니다) (// meta.stackexchange.com/q/114762/350567), 미래에 더 유용하게 만들 것입니다 독자는 다른 유사한 질문을합니다. 귀하의 가정을 포함하여 몇 가지 설명을 추가하려면 답을 편집하십시오. – iBug

관련 문제