Есть слайдер (swiper). Нужно динамически выводить номер слайда. Для этого я сделал переменную и применил событие при смене слайда. Сам вызов метода при смене слайда есть, он просто выше в верстке. Но, сама переменная меняется, когда меняю слайд, но на самой странице нет. Подскажите, почему на странице значение не меняется? Что необходимо, чтобы вызвать перерендер?
Проблема как по мне в методе отслеживания события, потому что если навесить обычный слушатель типа (click), там переменная динамически меняется как надо
У тебя не вызывается onSlideChange. Поставь там консоль и убедись в этом. Ты скорее всего не забиндил эту функцию в самом теге <swiper ...>
Для проверки выводил переменную через console.log в методе, там всё ок
что у тебя в swiper.activeIndex выдает?
максимально странно, переменная должна обновляться в шаблоне
Сделай пример на stackblitz или где-то еще. Судя по коду все должно работать, если ты с конфигом где-то на уровне выше ничего не делал. По ощущению, оно обновляет переменную в другом другом инстансе, других причин, почему оно не работает не вижу
Хорошо, спасибо
повторил ошибку на stackblitz https://stackblitz.com/edit/swiper-angular-example-rwpjre?file=src/app/app.component.ts На всякий случай продублирую проблему: "Нужно динамически выводить номер слайда. Для этого я сделал переменную и применил событие при смене слайда. Но, сама переменная меняется, когда меняю слайд, но на самой странице нет. Подскажите, почему на странице значение не меняется? Что необходимо, чтобы вызвать перерендер?"
Понял, особенность свайпера, он работает отдельно от обычного потока компонента (не вызывает в нем триггер того, что что-то поменялось). Добавь следующее: constructor(private changeDetectorRef:ChangeDetectorRef){} ... onSlideChange(): void { ... this.changeDetectorRef.detectChanges(); }
Ого, спасибо большое
Вообще такого быть не должно, я не уверен, что ты правильно сетапишь свайпер, но времени лезть в доку его и смотреть сейчас нет
Обсуждают сегодня