ng2-nouislider icon indicating copy to clipboard operation
ng2-nouislider copied to clipboard

Add or remove handles dinamically

Open marcoshier opened this issue 6 years ago • 5 comments

I've been trying to dynamically update the slider adding range sliders at the (click) event, but nothing seems to happen.

HTML

<nouislider (change)="sliderChangeSun($event)" [config]="configSliderSun"></nouislider>
<div (click)="addHandle()" class="add"></div>

TS

  configSliderSun: any = {
    start: [0, 15],
    connect: [false, true, false],
    range: {
      'min': 0,
      'max': 24
    }
addHandle() {
   this.configSliderSun.start.push(20, 35);
   this.configSliderSun.connect.push(false, true, false);
 }

What's wrong in the approach I'm using? The array gets updated according to console log, but the range slider doesn't update.

marcoshier avatar Jul 05 '18 12:07 marcoshier

hi do you fix this now?

ajaxsys avatar Sep 24 '18 03:09 ajaxsys

Is there any solution?

good-news-everyone avatar Oct 12 '18 07:10 good-news-everyone

Unfortunately , this option is not support by updateOptions, so you need to slider.noUiSlider.destroy() and create a new one.

Ref doc: https://refreshless.com/nouislider/more/#section-update

ajaxsys avatar Oct 14 '18 12:10 ajaxsys

Yea unfortunately the only solution we should was to stick the component inside a ngIf="showSlider" and rerender the component on-the-fly.

this.showSlider = false;
setTimeout(() => {
    this.showSlider = true;
    this.changeDetectorRef.detectChanges();      // Angular ChangeDetectorRef Service
});

smasala avatar Dec 03 '18 14:12 smasala

I`m trying to implement a range slider with ng2-nouislider into a reactive form.

I also want to add or remove handles dynamically.

I have a reactive form in my project and it is not possible for me to change to a template driven one.

Here is my stackblitz for the ngmodel variant that works like I want:

https://stackblitz.com/edit/ng2-nouislider-with-form-8vbrt4?file=src/app/app.component.html

And here is the stackblitz for the reactive form variant:

https://stackblitz.com/edit/ng2-nouislider-with-form-g8zpq4?file=src/app/app.component.html

In this documentation it sais the nouislider component has to be destroyed to add new handles:

https://refreshless.com/nouislider/more/#section-update

But I tried it also without destroy via the destroy method of nouislider in the ngmodel variant and it worked also well. The destroy via the if condition seems to be enough.

My problem is in the reactive form variant. If you try this example and push the plus button, you can see, that the handle is added, but the forms value is not correct after the reinitialization of the slider in the dom.

The value seems to be only for a short time correct, and then the array loses the last value. In other words. If the value is [33,66] and should be [25,50,75] after the button click, the value is only very short correct, and the it is only [25,50].

It seems that the slider is not really destroyed and remembers the old array length of the start value. And after reinitialization it overrides the form value again.

So please.....

Is anybody able to help me here? I can not see any error in my code here. Thanks in advance =)

frischka avatar Jan 27 '21 12:01 frischka