NEURALNG
DATABETA

DataView

Present one immutable collection as a polished list or responsive grid with typed templates, controlled Signals, deterministic local state and remote request ownership.

Typed templatesLocal + remoteHeadless ready

GET STARTED

Import

Import the canonical component and only the standalone template directives used by the view.

app.ts TypeScript
import {
  NeuralDataView,
  NeuralDataViewListItemTemplate,
  NeuralDataViewGridItemTemplate,
} from '@neural-ng/core/data-view';

@Component({ imports: [NeuralDataView, NeuralDataViewListItemTemplate,
  NeuralDataViewGridItemTemplate] })

List and grid from one collection

The header composes NeuralSelect and NeuralButton controls. DataView owns presentation, stable sorting and current-page slicing.

Product catalog8 agent-ready products

Compute

Agent Hub

A command center for autonomous workflows.

$1,149In stock

Office

Context Board

Keep intent visible to every collaborator.

$199In stock

Accessories

Headless Clock

Timezone-safe focus for distributed agents.

$89In stock

Lighting

Hydration Lamp

Adaptive light with instant startup.

$129Low stock

Audio

Neural Speaker

Clear spatial sound for focused teams.

$249In stock

Office

Signal Desk

A calm workspace for reactive products.

$899In stock
Controlled state: grid · first 0 · 6 rows

Deterministic local state

Local mode clones before sorting, supports nested paths such as metadata.category, preserves equal-value order and clamps paging without mutating source data.

Controlled models

layout, first, rows and sort state remain writable Signals.

Stable sorting

Equal values retain their source order.

Serializable state

Every semantic event carries the complete state snapshot.

Remote request ownership

Remote mode renders the page exactly as supplied and emits state for the application to fetch. It never sorts or slices server data.

Signal DeskOffice
Hydration LampLighting
Standalone ChairOffice
Request 1 · records 1–3 of 80

Loading and empty states

Busy content is replaced by stable skeletons or a typed loading template. Empty content can be fully owned without losing its label context.

Loading records
No matching productsTry changing the current filters.
Synchronizing remote productsTyped loading content replaces fallback skeletons.

Six typed template surfaces

List and grid contexts infer T from their bound collection. State templates receive the configured label; header and footer remain ordinary composition surfaces.

templates.html HTML
<ng-template neuralDataViewHeader>...</ng-template>
<ng-template [neuralDataViewListItem]="products"
  let-product let-index="originalIndex" let-first="first">...</ng-template>
<ng-template [neuralDataViewGridItem]="products" let-product>...</ng-template>
<ng-template neuralDataViewLoading let-label>...</ng-template>
<ng-template neuralDataViewEmpty let-label>...</ng-template>
<ng-template neuralDataViewFooter>...</ng-template>

Identity and custom sorting

trackBy keeps DOM identity stable. sortComparator replaces value comparison while DataView still owns stable tie-breaking and sort direction.

catalog.ts TypeScript
readonly productTrackBy = (product: Product) => product.id;

readonly domainSort: NeuralDataViewSortComparator<Product> =
  (a, b, field, order) => compareDomainValues(a, b, field, order);

Unstyled and typed class slots

Headless mode removes every NeuralNg visual class while semantic structure, state, typed contexts and Paginator behavior remain.

Consumer-owned catalog
1Signal DeskOffice
2Hydration LampLighting
3Standalone ChairOffice
Structural hooks and paging remain active.

Responsibility boundaries

DataView owns

Presentation, layout, paging, sorting, templates, loading/empty state and accessible collection structure.

Application owns

Fetching, filtering, selection, editing and business actions. Use VirtualScroller for windowing.