Значение элемента HTML Range не обновляется с помощью функции Angular6

Я пытаюсь получить доступ к изменяющимся значениям ряда ползунков диапазона HTML.

Вот как они создаются:

<li *ngFor = "let rgbVal of rgbVals; let i=index">
            {{i}}: {{rgbVal}} <br>
            <div class = "color-box" [style.backgroundColor] = "rgbVal"></div>
            <div class = "slideContainer" >
                <input type = "range" min = "1" max = "100" value = "30"  class = "slider" id = "shade{{i}}" step = "1" (change) = "update(i)"  >

            </div>


        </li>

Это функция Typescript, которая есть у меня в моей функции .ts, которая должна иметь доступ к значению ползунков:

update(i){
var id = "shade"+i;
var slider = document.getElementById(id);
console.info(slider.getAttribute("value"));}

Значение после перемещения ползунка остается постоянным и неизменным, независимо от того, какой ползунок я перемещаю или насколько я его перемещаю.

Интересно, что если я запустил этот код:

 update(i){
var sliders = document.getElementsByClassName("slider");
console.info(sliders);}

Затем в консоли откройте контейнер HTML и посмотрите на поле значения каждого ползунка, оно обновляется при перемещении.

Я тоже пробовал

slider = sliders[i];
console.info(slider.getAttribute("value");

И это оставалось неизменным независимо от изменений, даже несмотря на то, что этот ползунок при просмотре как часть объекта ползунков позволял обновлять значение.

Я сбит с толку этим и не могу найти никаких похожих ошибок в Интернете, поэтому любая помощь будет принята с благодарностью.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
163
1

Ответы 1

Ваша проблема в том, что slider.getAttribute("value") считывает значение атрибута, а не значение ввода, поэтому он всегда будет говорить 30.

Что вам нужно:

update(i: number) {
    const id = `shade${i}`;
    const slider = document.getElementById(id) as HTMLInputElement;
    console.info(slider.value);
}

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