2017-03-20 22 views
0

我有一個圖像數組,我想將它們顯示爲網格10x10(表)。我怎樣才能實現呢?分割數組作爲模板中的網格視圖Angular 2

我已經試過類似的東西,但它是錯誤的語法:

 <ng-container *ngFor="let avatar of avatars; let i = index"> 
      <ng-container *ngIf="i % 10 === 0 && i === 0"> 
       <tr> 
      </ng-container> 
      <ng-container> 
       <td class="text-center"> 
        <img class="img-avatar img-avatar48" [src]="avatar.avatarUri" [alt]="avatar.keywords" /> 
       </td> 
      </ng-container> 
      <ng-container *ngIf="i % 10 === 0"> 
       </tr> 
       <tr> 
      </ng-container> 
     </ng-container> 
+0

你不想使用'table'。看看使用CSS'flexbox'並給每個項目'寬度:10%' –

+0

不,我想進一步使用數據表進行分頁和搜索。所以,我需要一個表。 –

+0

夠公平的,我已經添加了一個答案,它應該可以實現你的目標 –

回答

-1

你的代碼包含額外tr做這樣的

<ng-container *ngFor="let avatar of avatars; let i = index"> 
    <ng-container *ngIf="i % 10 === 0 && i === 0"> 
     <tr> 
    </ng-container> 
    <ng-container> 
     <td class="text-center"> 
      <img class="img-avatar img-avatar48" [src]="avatar.avatarUri" [alt]="avatar.keywords" /> 
     </td> 
    </ng-container> 
    <ng-container *ngIf="i % 10 === 0"> 
     </tr> 
    </ng-container> 
</ng-container> 
+0

我可以知道我錯在哪裏嗎? downvoters? –

+0

你檢查過這段代碼嗎?它不適用於我 –

+0

不,我沒有檢查代碼,它似乎有錯誤,因此發佈在這裏作爲答案,@ChristopherMoore –

0

一種解決方案是大塊的數據轉換成數組每行,然後使用嵌套的*ngFor循環遍歷它們。這可以用一個自定義的管道

<table> 
    <tr *ngFor="let row of avatars | chunk: 10)"> 
    <td *ngFor="let avatar of row"> 
     <img class="img-avatar img-avatar48" [src]="avatar.avatarUri" [alt]="avatar.keywords" /> 
    </td> 
    </tr> 
</table> 

chunk管來實現既可以使用lodash _.chunk或低於本地所示:

import { Pipe, PipeTransform } from '@angular/core'; 

@Pipe({ 
    name: 'chunk' 
}) 
export class ChunkPipe implements PipeTransform { 

    transform(value: any, n: number): any { 
     return this.chunk(value, n); 
    } 

    chunk(arr, n) { 
     let newArr = []; 
     let nestedArr = []; 
     for (let i = 1; i <= arr.length; i++) { 
      nestedArr.push(arr[i - 1]); 
      if (i % n === 0) { 
       newArr.push(nestedArr); 
       nestedArr = []; 
      } 
     } 
     if (nestedArr.length > 0) { 
      newArr.push(nestedArr); 
     } 
     return newArr; 
    } 
} 
+0

不幸的是,它不能與獲取頭像的異步方法。 –

+0

哦,你沒有提到任何關於'async'的東西。嘗試將'chunk'轉換爲管道並將其添加到管道鏈中。例如'* ngFor =「讓一組化身|異步|組塊:10」' –