Динамическое изменение диапазона ng2-nouislider

У меня есть цикл, который создает разные ng2-noUiSliders, как это:

 <div *ngFor="let property of completeFilters">
            <h5>{{property.propertyName | translate}}</h5>
            <div *ngIf="setSliderValues(property); else renderCheckbox">
              <nouislider #sliderRef [config]="conf" [tooltips]="[true, true]" (end)="onSliderChange($event, property.propertyName)"></nouislider>
            </div>

Созданные ползунки являются ползунками диапазона, и один из них - ползунок цены. При смене валюты я хотел бы обновить ползунок min max другими значениями. Пока что я могу подобрать ползунки вот так:

@ViewChildren('sliderRef') public salesSliders: QueryList<NouisliderComponent>;

this.salesSliders.toArray()[0]; //the slider I want to update
this.salesSliders.toArray()[1];
...

Но я не могу заставить его работать с примерами updateOptions, которые я видел. Кто-нибудь делал это, когда в цикле было несколько слайдеров, как в моем случае?

1 ответ

Для обновления вашего пользовательского интерфейса последними значениями вам нужно выполнить следующие шаги

    // Import this in componnet where your are updating the values
    import { ChangeDetectorRef } from '@angular/core'; 
    constructor(private cd: ChangeDetectorRef) {}


    //call below method after you changes
    this.cd.detectChanges();
let s1 = this.salesSliders.toArray()[0];
let s2 = this.salesSliders.toArray()[1];

    s1.slider.on('change.one', function (event) {
      let conf = {
        behaviour: 'drag',
        tooltips: true,
        connect: 'lower',
        range: {
          min: [5],//any numeric value or value from s1 slider
          max: [25]//any numeric value
        },
        format: {
          to: function ( value ) {
            return value;
          },
          from: function ( value ) {
            return value;
          }
        },
        pips: {
          mode: 'steps',
          stepped: true,
          density: 2
        },
        step: 2,
        start: 5,//any numeric value or value from s1 slider for position of handle
        end: 25//any numeric value
      }
  s2.slider.updateOptions(conf,true); // way to use updateOptions()
})

здесь вам нужно использовать свойство "слайдер". Я использовал слайд-событие. Вы можете проверить больше событий

Другие вопросы по тегам