2016-08-23 32 views
14

Angular 2 ngFor Kullanarak bir tablo oluyorum.ngFor 2 satır oluştur

Benim sorun my data array

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

sorun bu tbody olan (ikinci sıra daha fazla veri katlanabilir, farklı alanları kullanarak), her bir eleman tabloda 2 ardışık satır oluşturmalıdır elements şekilde içermesidir <tr>'un yanındaki herhangi bir özelliğe izin vermez.

Ben biraz farklı sözdizimi ile var

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

cevap

20

gibi bir şey arıyorum:

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

veya

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

güncelleme> = 4.0.0 <template> içinolarak değiştirildi

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

teşekkür feryat eylem görebilirsiniz. Neden sözdizimi farkını anlamıyorum. Bu belgede sözdizimini gördü ve çalışmadı (yazım hatası) * ngFor ile çalıştı. Ayrıca IDE'm bu sözdiziminin burada "izinli" olmadığını ve otomatik tamamlama olmadığını şikayet ediyor. – royB

+0

https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template IDE'yi bilmiyorum. Cevabımda gösterdiğim şey, kanonik sözdizimi. '* ngFor' sözdizimsel şekerdir. –

+0

Birkaç gün önce buna ihtiyacım vardı, ancak bunu bootstrap 3 satır ve col-xx-y sınıfları ile uyguladım. İkinci sıra, birincisi tarafından aktive edildi ve bir matkaplama masası görevi görecekti. Temel olarak, proje boyunca çeşitli yaklaşımlara "parçalanmayı" engellemeye çalıştım ve her görünümde aynı kalmasını istedim. –

1

Aynı sorunla karşılaştım ve iyi bir çözüm bulamadım. Ama derin bir araştırmadan sonra bu ng-kabı buldum ve çok iyi çalıştı. 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

Sınırlı, anında yardım sağlayabilen bu kod snippet'i için teşekkür ederiz. Bir [doğru açıklama uzun vadeli değerini büyük ölçüde artıracaktır] (// meta.stackexchange.com/q/114762/350567) * niçin * niçin bu soruna iyi bir çözümdür ve geleceği daha faydalı hale getirecektir. diğer benzer sorularla okuyucuları. Lütfen yaptığınız varsayımlar dahil, bazı açıklamalar eklemek için cevabınızı [düzenleyin]. – iBug

İlgili konular