2017-10-05 104 views
0

我試圖在Angular 4中實現分頁,但它仍然不起作用。我已經使用了一項服務來訂閱我的數據並將其輸出到html中,並且我想通過在其中添加分頁來限制它。下面是我的代碼。在Angular 4中的Ng-Bootstrap分頁

TS

export class ProductListComponent implements OnInit { 
    closeResult: string; 
    products: any; 
    subscription: Subscription; 

    constructor(private modalService: NgbModal, private productService: ProductsService) { } 
    page :number = 1; 
    ngOnInit() { 
    this.subscription = this.productService.getAll() 
     .subscribe(
      (data:any) => { 
      this.products = data; 
      }, 
      error => { 

      }); 
    } 
} 

HTML

<tbody> 
    <tr *ngFor="let product of products"> 
    <td>{{ product.name }}</td> 
    <td>{{ product.desc }}</td> 
    <td>{{ product.qty }}</td> 
    <td>{{ product.price }}</td> 
    <td> 
     <button type="button" class="btn btn-sm btn-primary"><i class="fa fa-pencil-square-o" aria-hidden="true"></i> Edit</button> 
    </td> 
    </tr> 
</tbody> 
</table> 
<nav class="pull-right"> 
    <ul class="pagination pagination-sm"> 
    <ngb-pagination [collectionSize]="50" [(page)]="currentPage" size="sm"></ngb-pagination> 
    </ul> 
</nav> 

回答

1

你必須通過pageProducts做* ngFor

<tr *ngFor="let product of pageProducts"> 
    <td>{{ product.name }}</td> 
    ... 

//And in your module: 
currentPage:number=1; 
get pageProducts(){ 
    return this.products.slice((currentPage-1)*10,currentPage*10); 
} 
+0

我的訂閱數據會怎樣?我如何使用此分頁連接到我的訂閱數據? – Joseph

+0

您必須維護您的productService的訂閱(這是訂閱巫婆填充「this.products」)。使用「getter」force angular詢問關於「pageProduct」的責任,只給你想要的物品 – Eliseo

+0

是的this.products是「讓產品的產品」。你可以編輯你的代碼,並把你的代碼與我的代碼。非常感謝 – Joseph