ion-slides 方法不适用于 ionic 4
ion-slides methods not working in ionic 4
无法使用官方文档中ion-slides提供的方法。在这里检查了其他答案,但似乎都将 ionic 4 与 ionic 3 混淆了,并提供了适用于 ionic 3 的答案。
我想获取幻灯片的活动索引。关于如何实施它的在线文档并不完整。
在 html 中使用幻灯片 ID 和活动幻灯片更改时发出的函数构建滑块。
<ion-slides #slides (ionSlideDidChange)="getIndex()">
<ion-slide></ion-slide>
</ion-slides>
在 .ts 文件中,您使用 ViewChild 导入滑块 ID 并设置函数以获取活动索引。
import { Component, OnInit, ViewChild } from '@angular/core';
import { Slides } from '@ionic/angular';
export class Page implements OnInit {
@ViewChild('slides') slides: Slides;
constructor() {}
ngOnInit() {
}
async getIndex() {
console.log(await this.slides.getActiveIndex());
}
}
我遇到了同样的问题,但我用下面的代码解决了它:
我的.ts文件:
export class RegistroPage implements OnInit {
@ViewChild('registroWizard') registroWizard: IonSlides;
slideOpts: any;
constructor() {
this.slideOpts = {
effect: 'fade'
};
}
ngOnInit() {
this.registroWizard.lockSwipeToNext(true);
}
}
我的 HTML 文件:
<ion-slides #registroWizard pager="true" [options]="slideOpts">
<ion-slide>
<h1>Slide 1</h1>
<ion-button>Hola</ion-button>
</ion-slide>
<ion-slide>
<h1>Slide 2</h1>
<ion-button>Hola</ion-button>
</ion-slide>
<ion-slide>
<h1>Slide 3</h1>
<ion-button>Hola</ion-button>
</ion-slide>
</ion-slides>
在 ionic 4 中,getActiveIndex() 方法的 return 类型是 Promise<number>
,因此您在 ionic 3 中使用的代码将不再有效。您至少可以将其关闭,例如:
this.slider.getActiveIndex()
.then(activeIndex => {
console.log('active index = ', activeIndex );
if (activeIndex < this.slides.length) {
this.selectedSegment = this.slides[activeIndex ].id;
}
});
或者你想用它做什么。官方文档实际上非常棒:https://ionicframework.com/docs/api/slides
我是这样解决问题的:
page.ts:
import { IonSlides } from '@ionic/angular';
...
@ViewChild('slides') slides: IonSlides;
nextSlide() {
this.slides.slideNext();
}
page.html:
<ion-slides #slides pager="true" [options]="slideOpts">
<ion-slide>slide 1</ion-slide>
<ion-slide>slide 2</ion-slide>
</ion-slides>
<ion-button (click)="nextSlide()" class="register-buttons">go next</ion-button>
后退动作完全相同
注意:使用 IonSlides,不要使用 ElementRef 和 nativeElement
只需按照下面的代码,它就可以很好地从 getActiveIndex()
获取活动索引
import { IonSlides } from '@ionic/angular';
@ViewChild('slides', {static: true}) slides: IonSlides;
slideChanged(e: any) {
this.slides.getActiveIndex().then((index: number) => {
console.log(index);
});
}
静态:真
@ViewChild('ionSlides', { static: true }) ionSlides: IonSlides;
你需要声明 class 到 app.module.ts
@NgModule({
declarations: [MySliderComponent]
})
我使用 IonSlides 作为类型,但它没有帮助。
对我来说,上述解决方案不起作用(ionic v6.17.1)。有效的是:
@ViewChild('slides', {static: true}) slides: ElementRef;
swipeRight() {
this.slides.nativeElement.slideNext();
所有方法都是这样工作的。改变 ```{static: true} 没有抛出任何错误
如果您 console.log 在将幻灯片声明为 IonSlides 类型后,它会显示 ElementRef 类型
无法使用官方文档中ion-slides提供的方法。在这里检查了其他答案,但似乎都将 ionic 4 与 ionic 3 混淆了,并提供了适用于 ionic 3 的答案。
我想获取幻灯片的活动索引。关于如何实施它的在线文档并不完整。
在 html 中使用幻灯片 ID 和活动幻灯片更改时发出的函数构建滑块。
<ion-slides #slides (ionSlideDidChange)="getIndex()">
<ion-slide></ion-slide>
</ion-slides>
在 .ts 文件中,您使用 ViewChild 导入滑块 ID 并设置函数以获取活动索引。
import { Component, OnInit, ViewChild } from '@angular/core';
import { Slides } from '@ionic/angular';
export class Page implements OnInit {
@ViewChild('slides') slides: Slides;
constructor() {}
ngOnInit() {
}
async getIndex() {
console.log(await this.slides.getActiveIndex());
}
}
我遇到了同样的问题,但我用下面的代码解决了它:
我的.ts文件:
export class RegistroPage implements OnInit {
@ViewChild('registroWizard') registroWizard: IonSlides;
slideOpts: any;
constructor() {
this.slideOpts = {
effect: 'fade'
};
}
ngOnInit() {
this.registroWizard.lockSwipeToNext(true);
}
}
我的 HTML 文件:
<ion-slides #registroWizard pager="true" [options]="slideOpts">
<ion-slide>
<h1>Slide 1</h1>
<ion-button>Hola</ion-button>
</ion-slide>
<ion-slide>
<h1>Slide 2</h1>
<ion-button>Hola</ion-button>
</ion-slide>
<ion-slide>
<h1>Slide 3</h1>
<ion-button>Hola</ion-button>
</ion-slide>
</ion-slides>
在 ionic 4 中,getActiveIndex() 方法的 return 类型是 Promise<number>
,因此您在 ionic 3 中使用的代码将不再有效。您至少可以将其关闭,例如:
this.slider.getActiveIndex()
.then(activeIndex => {
console.log('active index = ', activeIndex );
if (activeIndex < this.slides.length) {
this.selectedSegment = this.slides[activeIndex ].id;
}
});
或者你想用它做什么。官方文档实际上非常棒:https://ionicframework.com/docs/api/slides
我是这样解决问题的:
page.ts:
import { IonSlides } from '@ionic/angular';
...
@ViewChild('slides') slides: IonSlides;
nextSlide() {
this.slides.slideNext();
}
page.html:
<ion-slides #slides pager="true" [options]="slideOpts">
<ion-slide>slide 1</ion-slide>
<ion-slide>slide 2</ion-slide>
</ion-slides>
<ion-button (click)="nextSlide()" class="register-buttons">go next</ion-button>
后退动作完全相同
注意:使用 IonSlides,不要使用 ElementRef 和 nativeElement
只需按照下面的代码,它就可以很好地从 getActiveIndex()
import { IonSlides } from '@ionic/angular';
@ViewChild('slides', {static: true}) slides: IonSlides;
slideChanged(e: any) {
this.slides.getActiveIndex().then((index: number) => {
console.log(index);
});
}
静态:真
@ViewChild('ionSlides', { static: true }) ionSlides: IonSlides;
你需要声明 class 到 app.module.ts
@NgModule({
declarations: [MySliderComponent]
})
我使用 IonSlides 作为类型,但它没有帮助。 对我来说,上述解决方案不起作用(ionic v6.17.1)。有效的是:
@ViewChild('slides', {static: true}) slides: ElementRef;
swipeRight() {
this.slides.nativeElement.slideNext();
所有方法都是这样工作的。改变 ```{static: true} 没有抛出任何错误 如果您 console.log 在将幻灯片声明为 IonSlides 类型后,它会显示 ElementRef 类型