Filter by title

Angular UI Extensions

Angular UI extensions system allows you to add a new action to the actions menu, a new column to the data table, a new action to the toolbar of a page, and add a new field to the create and/or edit forms.

See the documents below for the details:

Standalone-first: Current ABP templates use standalone APIs (app.config.ts, app.routes.ts, and createRoutes()). Extension examples register contributors through route-level lazy loading — loadChildren returns routes from createRoutes({ ... }), not NgModules. Legacy NgModule projects can pass the same contributor options to SomeModule.forLazy({ ... }) instead. See ABP Now Supports Angular Standalone Applications for the forLazy()createRoutes() migration.

Extensible Table Component

Using ngx-datatable in extensible table.

      <abp-extensible-table
         actionsText="Your Action"
         [data]="items"
         [recordsTotal]="totalCount"
         [actionsColumnWidth]="38"
         [actionsTemplate]="customAction"
         [list]="list"
         (tableActivate)="onTableSelect($event)" 
      /> 
Input / Output Description Type
actionsText Column name of the action column. string
data Items shown in your table. Array<any>
list Instance of ListService. ListService
actionsColumnWidth Width of your action column. number
actionsTemplate Template of the action (for example, an ng-template). TemplateRef<any>
recordsTotal Total count of records. number
tableActivate Output fired when a cell or row is focused via keyboard or mouse click. EventEmitter

Multiple Selection

The extensible table supports both single-row and multi-row selection. Use the selectable input to enable selection, and selectionType to control the selection mode.

<abp-extensible-table
  [data]="items"
  [recordsTotal]="totalCount"
  [list]="list"
  [selectable]="true"
  [selectionType]="'multiClick'"
  [selected]="selectedRows"
  (selectionChange)="onSelectionChange($event)"
/>

When selectionType is 'single', each row displays a radio button and the header does not show a "select all" checkbox. For all other selection types (e.g. 'multiClick', 'checkbox'), each row shows a checkbox and the header includes a "select all" checkbox.

Input / Output Description Type Default
selectable Enables the row selection column. boolean false
selectionType Controls the selection mode. Accepts SelectionType values such as 'single', 'multi', 'multiClick', 'checkbox', or 'cell'. SelectionType | string 'multiClick'
selected The currently selected rows. any[] []
selectionChange Output fired when the selection changes. EventEmitter<any[]> -

Infinite Scroll

The extensible table supports infinite scrolling as an alternative to pagination. When enabled, the table emits a loadMore event as the user scrolls near the bottom, allowing you to load additional data on demand. Pagination is hidden while infinite scroll is active.

<abp-extensible-table
  [data]="items"
  [recordsTotal]="totalCount"
  [list]="list"
  [infiniteScroll]="true"
  [isLoading]="isLoading"
  [tableHeight]="500"
  [scrollThreshold]="10"
  (loadMore)="onLoadMore()"
/>

In your component, append newly fetched data to the existing items array when loadMore fires:

onLoadMore(): void {
  if (this.isLoading) return;
  this.isLoading = true;
  // fetch next page and append results
  this.myService.getList({ skipCount: this.items.length, maxResultCount: 10 }).subscribe(result => {
    this.items = [...this.items, ...result.items];
    this.isLoading = false;
  });
}

Note: When infiniteScroll is true, set a fixed tableHeight so the table has a scrollable viewport. Pagination is automatically hidden.

Input / Output Description Type Default
infiniteScroll Enables infinite scroll mode (hides pagination). boolean false
isLoading Indicates that more data is being fetched. Prevents duplicate loadMore events and shows a loading indicator. boolean false
tableHeight Fixed height of the table in pixels when infiniteScroll is enabled. number -
scrollThreshold Distance from the bottom (in pixels) at which loadMore is triggered. number 10
loadMore Output fired when the user scrolls near the bottom of the table (only when infiniteScroll is true and isLoading is false). EventEmitter<void> -

Was this page helpful?

Please make a selection.

To help us improve, please share your reason for the negative feedback in the field below.

Please enter a note.

Thank you for your valuable feedback!

Please note that although we cannot respond to feedback, our team will use your comments to improve the experience.

ABP Community Talks
Low-Code, High Precision
13 Aug, 17:00
Online
Watch the Event
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.