我使用离子7和刷卡组件如下
<ng-container *ngIf="core.loggedIn === true">
<swiper-container #swiper (afterinit)="swiperReady()" [pagination]="true">
<swiper-slide style="height: 600px;">
<ion-row>
<ion-col class="ion-text-center">
<ion-button class="ban-half-button" (click)="goNext()">Go</ion-button>
</ion-col>
</ion-row>
</swiper-slide>
<swiper-slide>
<ion-row>
<ion-col class="ion-text-center">
<ion-button class="ban-half-button" (click)="goNext()">Next</ion-button>
</ion-col>
</ion-row>
</swiper-slide>
</swiper-container>
</ng-container>
goNext和.ts上的代码是
import { Swiper } from 'swiper';
export class Tab1Page {
@ViewChild('swiper')
swiperRef: ElementRef | undefined;
swiper?: Swiper;
goNext() {
this.swiper?.slideNext();
}
swiperReady() {
this.swiper = this.swiperRef?.nativeElement.swiper;
}
}
当我在上面的代码中单击goNext()时,这没有任何作用。但是,如果我去掉条件
*ngIf="core.loggedIn === true"
然后它开始工作。我能感觉到这里发生了什么,由于条件变为真时的延迟,刷卡器没有初始化。但我不知道如何解决这个问题?
1条答案
按热度按时间1rhkuytd1#
解决这个问题的一种方法是使用 *ngIf else语法,仅在条件为true时呈现swiper容器,并在条件为false时显示加载器或空div。这将允许swiper在渲染之前进行初始化,以确保其正常工作。