自定义Ionic幻灯片组件{Slides}导入参考仅更新上次创建的幻灯片组件

问题描述 投票:0回答:1

预期的行为:当我将多个离子幻灯片组件添加到页面中时,我应该能够引用这些幻灯片并根据屏幕大小更新其属性。

当前行为:当我在页面上有多个离子幻灯片组件并尝试根据屏幕大小更新其属性时,只有最后创建的幻灯片组件才会使用新设置进行实际更新。

MovieSliderComponent.html

<ion-slides #Slides class="slides" *ngIf="movies.length > 0" centeredSlides="true" loop="true" slidesPerView="3">

我在html中添加了对幻灯片的引用。

MovieSliderComponent.ts

@ViewChild('Slides') slider: Slides;

我将引用应用于变量。

Home.html中

<movie-slider #Slider id="nowPlaying" *ngIf="mdata.inTheatres.length > 0" [movies]="mdata.inTheatres">

<movie-slider #Slider id="nowPlayingNearYou" *ngIf="mdata.nearbyShowings.length > 0" [movies]="mdata.nearbyShowings">

<movie-slider #Slider id="genreSuggestions" *ngIf="mdata.suggestedByGenre.length > 0" [movies]="mdata.suggestedByGenre" [showGenres]="true">

我将我的组件包含在我的页面html中三次。

Home.ts

@ViewChildren('Slider') Slides: MovieSliderComponent[];

我在变量中引用了每个幻灯片;

setSlidesPerView() {

 if(this.platform.width() >= 1200) {
   this.Slides.forEach((slider) => slider.slider.slidesPerView = 5);
   console.log(this.platform.width());
 }

 else if(this.platform.width() >= 319 && this.platform.width() < 1200) {
   this.Slides.forEach((slider) => slider.slider.slidesPerView = 3);
 }

 else if(this.platform.width() < 319) {
   this.Slides.forEach((slider) => slider.slider.slidesPerView = 1);
 }

 this.cd.detectChanges();
}

我尝试更改每个滑块slidePerView选项,但只有带有slide-id-2的幻灯片(最后创建的滑块)才会更新。

链接到我原来的问题@ ionic-team / ionic-v3 https://github.com/ionic-team/ionic-v3/issues/990

javascript angular typescript ionic-framework ionic4
1个回答
0
投票

我通过在每个幻灯片实例上调用slides.resize和slides.update来解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.