Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 

64 rader
1.9 KiB

  1. import {AfterViewInit, ChangeDetectorRef, Component, Input, OnInit, ViewChild} from '@angular/core';
  2. import {MatPaginator, MatPaginatorIntl, PageEvent} from "@angular/material/paginator";
  3. import {NgbModalOptions} from "@ng-bootstrap/ng-bootstrap";
  4. import {Observable, throwError} from "rxjs";
  5. import {MatTableDataSource} from "@angular/material/table";
  6. import {AppHelperService} from "@app/_helpers/app-helper.service";
  7. @Component({
  8. selector: 'app-paging',
  9. templateUrl: './paging.component.html',
  10. styleUrl: './paging.component.scss'
  11. })
  12. export class PagingComponent implements OnInit {
  13. @Input() public dataSource!: any;
  14. @Input() public getDataFunction!: Function;
  15. @Input() public pageSize!: number;
  16. @Input() public pageSizeOptions!: number[];
  17. @ViewChild(MatPaginator) public paginator!: MatPaginator;
  18. private defaultPageSize: number = 10;
  19. private defaultPageSizeOptions: number[] = [10,20,50];
  20. public dataLength: number;
  21. public pageEvent: PageEvent;
  22. protected pageIndex: number;
  23. constructor(
  24. ) {
  25. this.dataLength = 0;
  26. this.pageEvent = new PageEvent();
  27. this.pageIndex = 0;
  28. }
  29. ngOnInit() {
  30. this.pageSize = this.pageSize !== undefined ? this.pageSize : this.defaultPageSize;
  31. this.pageSizeOptions = this.pageSizeOptions !== undefined ? this.pageSizeOptions : this.defaultPageSizeOptions;
  32. this.paginator = new MatPaginator(new MatPaginatorIntl(), ChangeDetectorRef.prototype);
  33. }
  34. ngAfterViewInit() {
  35. this.dataSource = this.paginator;
  36. this.getDataFunction();
  37. }
  38. handlePageEvent(e: PageEvent) {
  39. this.pageEvent = e;
  40. this.dataLength = e.length;
  41. this.pageIndex = e.pageIndex.valueOf();
  42. this.pageSize = e.pageSize.valueOf();
  43. this.getDataFunction();
  44. }
  45. getPageIndex(): number {
  46. return this.pageIndex + 1;
  47. }
  48. getPageSize(): number {
  49. return this.pageSize;
  50. }
  51. }