2016-08-23 21 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行は、より多くのデータを用いて折り畳み可能であり、異なるフィールドを使用して)各要素は表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

おかげで怒鳴るアクションでそれを見ることができます。なぜ構文の違いを理解していない。私はドキュメントに構文があるのを見て、* ngForを試してみましたが、うまくいきませんでした(タイプミス)。また、私のIDEは、この構文がここでは「許可されていません」、オートコンプリートはしていないと訴えています。 – royB

+0

https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template私はIDEについて知りません。私が答えて示したのは、標準的な構文です。 '* ngFor'は構文的な砂糖です。 –

+0

私は数日前にこれが必要でしたが、私はブートストラップ3行とcol-xx-yクラスで実装しました。 2行目は最初の行で起動され、ドリルダウンテーブルとして機能します。基本的には、プロジェクト全体を通してさまざまなアプローチに「分解」することを避けようとしましたが、すべての視点で統一されたものにしたいと考えました。 –

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

関連する問題