angular - Swiper'da bir slayta tıklamayı nasıl algılarım?
Swiper paketinden bir kaydırıcı içeren bir Angular 2 bileşenim var. Hangi slayta (indeksiyle) tıkladığımı bilmek istiyorum. Swiper belgelerini takip etmeye çalışarak şuna sahibim:
import { Component, AfterViewInit } from "@angular/core";
import Swiper from "swiper";
@Component({
selector: "challenges",
templateUrl: "challenges.component.html"
})
export class ChallengesComponent implements AfterViewInit {
public mySwiper: Swiper;
public slides = [
"https://via.placeholder.com/300x200/",
"https://via.placeholder.com/300x200/",
"https://via.placeholder.com/300x200/"
];
constructor() { }
public ngAfterViewInit() {
this.mySwiper = new Swiper(".swiper-container", {
slidesPerView: 3,
spaceBetween: 30,
pagination: {
el: ".swiper-pagination",
type: "bullets",
clickable: true
},
on: {
click: function(){
console.log(this.mySwiper.clickedSlide);
}
}
});
}
}
Sorun şu ki, eğer bir slayta tıklarsam, bana bu hatayı veriyor this.mySwiper tanımsız. Neden, eğer this.mySwiper bir sınıf üyesi ise?
Cevap #1
this yanlış bağlamda. Belgelerde şöyle deniyor:
Lütfen unutmayın, bu anahtar kelime olay işleyici içinde her zaman Swiper örneğine işaret eder
mySwiper olmadan, sadece this.clickedSlide ile deneyin.
Cevap #2
Hiç çaba harcamadan function'ı arrow function'a değiştirebilirsiniz ve fonksiyon kapsamınız this'e bağlanacaktır. Böylece swiper'a bu şekilde erişebilirsiniz!
Başka bir çözüm, ViewChild dekoratörü ile @ViewChild('swiper-container') kullanmaktır