Select a numeric span with two thumbs — for example 20–60 within 10–100. Hover (or focus) a thumb to see value tips. Works with Angular Forms via ngModel / formControlName.
Playground
<ply-dual-range-slider color="primary" [showValue]="true">Dual Range Slider</ply-dual-range-slider>
Bind an object { start, end }. Use color for the accent. Hover the track to see tips at each thumb.
Default (Primary)
Selected: 20 – 60
Success
Selected: 15 – 75
Danger
Selected: 30 – 70
<ply-dual-range-slider [(ngModel)]="range" color="success"></ply-dual-range-slider>
TypeScript
import { Component } from '@angular/core';
// Install: npx ply-ui-cli add dual-range-slider
// Paths are relative to aliases.components (default: src/app/components)
import { DualRangeSliderComponent } from './dual-range-slider/dual-range-slider.component';
@Component({
selector: 'app-dual-range-slider-example',
imports: [
DualRangeSliderComponent
],
template: `...`
})
export class DualRangeSliderExampleComponent {}Install
npx ply-ui-cli add dual-range-slider
Bound the track with min, max, and step. Example: price filter from $0 to $10,000.
Price: $0 – $10,000 (step 100)
Selected: $2000 – $7500
<ply-dual-range-slider [min]="0" [max]="10000" [step]="100" [(ngModel)]="price"> </ply-dual-range-slider>
TypeScript
import { Component } from '@angular/core';
// Install: npx ply-ui-cli add dual-range-slider
// Paths are relative to aliases.components (default: src/app/components)
import { DualRangeSliderComponent } from './dual-range-slider/dual-range-slider.component';
@Component({
selector: 'app-dual-range-slider-example',
imports: [
DualRangeSliderComponent
],
template: `...`
})
export class DualRangeSliderExampleComponent {}Install
npx ply-ui-cli add dual-range-slider
[showValue]="true" shows the span after the track. [showMinMax]="true" shows bounds. Tips are on by default; hide with [showTip]="false".
With value label
With min/max and value
<ply-dual-range-slider [showMinMax]="true" [showValue]="true" [(ngModel)]="range"> </ply-dual-range-slider>
TypeScript
import { Component } from '@angular/core';
// Install: npx ply-ui-cli add dual-range-slider
// Paths are relative to aliases.components (default: src/app/components)
import { DualRangeSliderComponent } from './dual-range-slider/dual-range-slider.component';
@Component({
selector: 'app-dual-range-slider-example',
imports: [
DualRangeSliderComponent
],
template: `...`
})
export class DualRangeSliderExampleComponent {}Install
npx ply-ui-cli add dual-range-slider
Set [disabled]="true" to prevent interaction.
<ply-dual-range-slider [disabled]="true" [(ngModel)]="range"></ply-dual-range-slider>
TypeScript
import { Component } from '@angular/core';
// Install: npx ply-ui-cli add dual-range-slider
// Paths are relative to aliases.components (default: src/app/components)
import { DualRangeSliderComponent } from './dual-range-slider/dual-range-slider.component';
@Component({
selector: 'app-dual-range-slider-example',
imports: [
DualRangeSliderComponent
],
template: `...`
})
export class DualRangeSliderExampleComponent {}Install
npx ply-ui-cli add dual-range-slider
Run the following command to add this component to your project:
npx ply-ui-cli add dual-range-slider
For AI agents
Copy a prompt with the registry name, CLI install, and import — or add the Ply MCP server.
npx -y ply-ui-mcp
Ply provides standalone components. Import the exact elements you want to use into your component.
// Install: npx ply-ui-cli add dual-range-slider
// Paths are relative to aliases.components (default: src/app/components)
import { DualRangeSliderComponent } from './dual-range-slider/dual-range-slider.component';
@Component({
selector: 'app-your-component',
imports: [
DualRangeSliderComponent
],
template: `...`
})
export class YourComponent {} API for dual-range-slider — generated from JSDoc in the library source.
| API | Member | Type | Default | Description |
|---|---|---|---|---|
ply-dual-range-slider | min | number | 0 | Lower bound of the track. |
ply-dual-range-slider | max | number | 100 | Upper bound of the track. |
ply-dual-range-slider | step | number | 1 | Step increment between selectable values. |
ply-dual-range-slider | color | SliderColor | 'primary' | Accent color for the selected span and thumbs. |
ply-dual-range-slider | disabled | boolean | false | Whether the control is disabled (consumer-facing input). |
ply-dual-range-slider | showValue | boolean | false | Always show the selected start–end label after the track. |
ply-dual-range-slider | showMinMax | boolean | false | Show the track min/max labels beside the slider. |
ply-dual-range-slider | showTip | boolean | true | When true (default), hover/focus shows value tips above each thumb. |
ply-dual-range-slider | ariaLabel | unknown | 'Range' | Accessible name for the control group. |
ply-dual-range-slider | class | string | '' | Extra host classes merged via `cn()`. |
Content