Angular 如何使用ngFor向div添加分页功能

Angular 如何使用ngFor向div添加分页功能,angular,pagination,angular-material,angular7,Angular,Pagination,Angular Material,Angular7,如何将分页功能添加到div app.component.html <div> <div *ngFor="let clg of colleges$"> <h3>{{clg.name}}</h3> </div> <mat-paginator [length]="100" [pageSize]="10" [pageSizeOptions]="[5, 10, 25, 100]"></mat-paginator

如何将分页功能添加到div

app.component.html

<div>

 <div *ngFor="let clg of colleges$">
  <h3>{{clg.name}}</h3>
 </div>

 <mat-paginator [length]="100" [pageSize]="10" [pageSizeOptions]="[5, 10, 25, 
 100]"></mat-paginator>

</div>

您应该使用延迟加载来加载数据

为此,您必须首先获取json文件中记录的总长度,并设置[length]=totalLength。然后,mat paginator将根据总长度自动为您设置页面。然后,您应该加载前10个数据,即0到10,并将其分配给$。我说10是因为它是[页面大小]。如果页面大小为5,请加载前5个数据,依此类推。然后,当用户单击一个页码时,例如2,您应该调用api,它应该返回下一组数据,即11到20,并将其分配给$。数据将在视图中自动刷新


最好创建一个api,当您传递两个参数——偏移量和限制时,它将为您获取数据,这是您的情况下的页面大小。paginator中有各种方法功能,当页面大小更改或用户单击页码时,这些方法功能将被触发。您应该使用延迟加载来加载数据

为此,您必须首先获取json文件中记录的总长度,并设置[length]=totalLength。然后,mat paginator将根据总长度自动为您设置页面。然后,您应该加载前10个数据,即0到10,并将其分配给$。我说10是因为它是[页面大小]。如果页面大小为5,请加载前5个数据,依此类推。然后,当用户单击一个页码时,例如2,您应该调用api,它应该返回下一组数据,即11到20,并将其分配给$。数据将在视图中自动刷新

最好创建一个api,当您传递两个参数——偏移量和限制时,它将为您获取数据,这是您的情况下的页面大小。分页器中有各种方法功能,当页面大小更改或用户单击页码时会触发这些方法功能

我将使用mat分页器的页面获取所选值,然后根据值筛选或拼接阵列:

HTML代码:

<div *ngFor="let clg of filteredArray">
    <h3>{{clg.name}}</h3>
</div>
<mat-paginator [length]="100" [pageSize]="defaultRecords" [pageSizeOptions]="[5, 10, 25, 100]" (page)="pageEvent = $event; onPaginateChange($event)">
</mat-paginator>
我将使用mat paginator的第页获取所选值,然后根据该值筛选或拼接阵列:

HTML代码:

<div *ngFor="let clg of filteredArray">
    <h3>{{clg.name}}</h3>
</div>
<mat-paginator [length]="100" [pageSize]="defaultRecords" [pageSizeOptions]="[5, 10, 25, 100]" (page)="pageEvent = $event; onPaginateChange($event)">
</mat-paginator>
您可以将mat paginator上的页面事件发射器用作page=onPageChange$event

您可以将mat paginator上的页面事件发射器用作page=onPageChange$event


你能告诉我你想要实现什么吗?我可以从json文件中获取详细信息,并使用ngFor显示它们。但是由于我有大量的数据…我想在div中添加一个分页元素…我使用的是角度材质分页组件。但我不知道如何将此功能添加到分页组件中@请给我补充一个答案check@LitsonThomas你可以在我的回答中查看工作示例。你能告诉我你想要实现什么吗?我可以从json文件中获取详细信息,并使用ngFor显示它们。但是由于我有大量的数据…我想在div中添加一个分页元素…我使用的是角度材质分页组件。但我不知道如何将此功能添加到分页组件中@请给我补充一个答案check@LitsonThomas您可以在我的答案中查看工作示例。属性“pageEvent”不起作用exist@PavloKozachuk尝试定义pageEvent:any;component.tsProperty“pageEvent”不可用exist@PavloKozachuk尝试定义pageEvent:any;虽然这段代码可以解决这个问题,但它如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请编辑您的答案以添加解释,并说明适用的限制和假设。虽然此代码可能会解决问题,但如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请编辑您的答案,添加解释,并说明适用的限制和假设。
<div *ngFor="let item of currentItemsToShow, let i=index;">Hello {{item.name}}</div>    

onPageChange($event) {
        this.currentItemsToShow =  this.items.slice($event.pageIndex*$event.pageSize,
        $event.pageIndex*$event.pageSize + $event.pageSize);
      }
<div>
    <div ngFor="let item of items| slice: (page-1)*pagesize : page*  pagesize; index as i;">
        <div *ngIf="page==1" scope="row">{{i+1}}</div>
        <div scope="row" *ngIf="page>1">{{((page-1)*pagesize)+(i+1)}}</div>
        <div>{{item}}</div>
    </div>
</div>
<ngb-pagination [collectionSize]="totalItems" [(page)]="page" [(pageSize)]="pagesize" [rotate]="true">
</ngb-pagination>