问题描述
我在Angular的Ionic 5项目中使用ion-slides
。根据{{3}},我想通过方法getSwiper
获取Swiper的实例,以使用this document
以下是HTML代码:
<ion-slides [options]="slideOpts" zoom>
<ion-slide>
<div class="swiper-zoom-container">
<img [src]=myURL />
</div>
</ion-slide>
</ion-slides>
我无法在类中调用方法getSwiper
。我不知道该怎么称呼。我需要为ViewChild
使用ion-slides
还是任何IonSlide事件都可以获取实例?
解决方法
类似这样的东西
import { Component,OnInit,ElementRef,ViewChild,AfterViewInit } from '@angular/core';
import { IonSlides } from '@ionic/angular';
@Component({
selector: 'app-demo',templateUrl: './demo.component.html',styleUrls: ['./demo.component.scss'],})
export class DemoComponent implements OnInit,AfterViewInit {
@ViewChild(IonSlides) slides: any;
constructor() { }
ngOnInit() {}
async ngAfterViewInit() {
console.log(await this.slides.getSwiper())
}
}
,
您可以按照@ihorbond的建议使用ViewChild,也可以在the events的任何位置使用模板引用传递swiper:
<ion-slides #slider [options]="slideOpts" zoom (ionSlideDidChange)="slidesChanged(slider)">
<ion-slide>
<div class="swiper-zoom-container">
<img src="https://picsum.photos/200/300" />
</div>
</ion-slide>
<ion-slide>
<div class="swiper-zoom-container">
<img src="https://picsum.photos/200/300" />
</div>
</ion-slide>
<ion-slide>
<div class="swiper-zoom-container">
<img src="https://picsum.photos/200/300" />
</div>
</ion-slide>
</ion-slides>
然后在您的模板中:
slidesChanged(slider) {
slider.getActiveIndex().then(index=>{
console.log(index)
})
}
请记住,all ionSlides methods会返回承诺。
Stackblits:https://stackblitz.com/edit/ionic-angular-v5-fsb1bx