From 01082fb2a5be21c9fa2fd1a8ac52ffc443055a3e Mon Sep 17 00:00:00 2001 From: crisbeto Date: Sun, 29 Apr 2018 10:25:05 -0400 Subject: [PATCH] fix(paginator): handle negative pageSize and pageIndex correctly Doesn't allow for the `pageSize` or `pageIndex` of the paginator to be set to negative numbers. It doesn't make sense for them to be negative and allowing it ends up displaying some weird values in the view. --- src/lib/paginator/paginator.spec.ts | 10 ++++++++++ src/lib/paginator/paginator.ts | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/lib/paginator/paginator.spec.ts b/src/lib/paginator/paginator.spec.ts index 72a0e1a1c789..044dc207fcda 100644 --- a/src/lib/paginator/paginator.spec.ts +++ b/src/lib/paginator/paginator.spec.ts @@ -157,6 +157,16 @@ describe('MatPaginator', () => { expect(isMarkedInitialized).toBeTruthy(); })); + it('should not allow a negative pageSize', () => { + paginator.pageSize = -1337; + expect(paginator.pageSize).toBeGreaterThanOrEqual(0); + }); + + it('should not allow a negative pageIndex', () => { + paginator.pageSize = -42; + expect(paginator.pageIndex).toBeGreaterThanOrEqual(0); + }); + describe('when showing the first and last button', () => { beforeEach(() => { diff --git a/src/lib/paginator/paginator.ts b/src/lib/paginator/paginator.ts index dc21563597ac..266425944efa 100644 --- a/src/lib/paginator/paginator.ts +++ b/src/lib/paginator/paginator.ts @@ -76,7 +76,7 @@ export class MatPaginator extends _MatPaginatorBase implements OnInit, OnDestroy @Input() get pageIndex(): number { return this._pageIndex; } set pageIndex(value: number) { - this._pageIndex = coerceNumberProperty(value); + this._pageIndex = Math.max(coerceNumberProperty(value), 0); this._changeDetectorRef.markForCheck(); } _pageIndex: number = 0; @@ -94,7 +94,7 @@ export class MatPaginator extends _MatPaginatorBase implements OnInit, OnDestroy @Input() get pageSize(): number { return this._pageSize; } set pageSize(value: number) { - this._pageSize = coerceNumberProperty(value); + this._pageSize = Math.max(coerceNumberProperty(value), 0); this._updateDisplayedPageSizeOptions(); } private _pageSize: number;