page is one-based. Provide total and pageSize, accept pageChange and use the applied values to fetch or slice the data. pageSizeOptions adds an optional selector. Accept pageSizeChange and pageChange: changing the size proposes a page that keeps the first visible record in view. maxVisible limits the numbered range, with first/last pages and ellipses for longer collections.
pageChange and pageSizeChange are proposals, not data loading. Keep one applied page and pageSize in the application. Pagination does not mutate or fetch your records.
Pagination is a named navigation landmark. The current page uses aria-current="page". Previous/next actions are disabled at the boundaries. The optional size selector has its own accessible name. Buttons support Tab, Enter and Space.
Key
Action
Tab
Move through available page controls and the optional page-size selector.
Enter
Activate the focused page button; unavailable boundary actions remain disabled.
Space
Activate the focused page button; unavailable boundary actions remain disabled.
ArrowUp / ArrowDown
In an open page-size selector, move through its options.
Inputs and Outputs match the pinned package. Named types link to their definitions; each supported Template has an executable example.
Inputs
Configure the component with [property]="value". Your application supplies these values; the component does not replace the state you pass in.
Name
Type
Default
Template binding
Description
maxVisible
number
7
[maxVisible]
Maximum numbered range, excluding previous/next; use at least 3.
page
number
1
[page]
Applied page number, starting at 1.
pageSize
number
10
[pageSize]
Applied positive number of records per page.
pageSizeAriaLabel
string
'Items per page'
[pageSizeAriaLabel]
Accessible name of the optional size selector.
pageSizeOptions
readonly number[]
[]
[pageSizeOptions]
Positive size choices; an empty array hides the selector.
total
number
0
[total]
Total record count, not the number of pages.
Outputs
Listen to an event with (event)="handler($event)". The table explains the data your handler receives and how to use it.
Name
Payload
Template binding
Description
pageChange
number
(pageChange)="onPageChange($event)"
Proposes a clamped one-based page.
pageSizeChange
number
(pageSizeChange)="onPageSizeChange($event)"
Proposes the next page size.
Templates
ng-content projects content into the component. TemplateRef inputs receive a template; ng-template directives identify templates with a typed context. A directive shared by an entrypoint is not necessarily a slot of this component.
This component does not expose content projection or public customization templates.