Skip to content

feat(slider): Allow users to manually set custom min & max values on slider thumbs #27208

Open
@amakhrov

Description

@amakhrov

Is this a regression?

  • Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was

No response

Description

This is somewhat similar to an older issue with mat-checkbox (#22149)

I want to ensure that the range in the slider is always greater than zero. E.g. if the "end" value is currently 9, then a user can only move the "start" thumb as high as 8.

I'm enforcing it by subscribing to valueChanges of the form controls associated with the slider input elements.

this.start.valueChanges.subscribe(() => {
  if (this.start.value >= this.end.value) {
    this.start.setValue(this.end.value - 1, { emitEvent: false });
  }
});

Even though the code above guarantees the form control values satisfy the constraint, the underlying DOM input element doesn't reflect the programmatic change from the setValue call.

A workaround I'm currently using is injecting the input elements (via @ViewChild) and setting its .value directly.

Reproduction

StackBlitz link: https://stackblitz.com/edit/benvwf-lmrtl4?file=src%2Fexample%2Fslider-range-example.ts
Steps to reproduce:

  1. Drag the "start" thumb all the way to the right

Expected Behavior

The "start" thumb stops at the "8" tick mark, never reaches the last "9".

Actual Behavior

  • The "start" thumb goes up to the "end" position ("9").
  • The form control value (printed above the slider) shows "8" - out of sync with the actual thumb state in the DOM

Environment

  • Angular: 16
  • CDK/Material: 16
  • Browser(s): Firefox
  • Operating System (e.g. Windows, macOS, Ubuntu): macOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3An issue that is relevant to core functions, but does not impede progress. Important, but not urgentarea: material/sliderfeatureThis issue represents a new feature or feature request rather than a bug or bug fix

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions