How can manage multiple slider in ionic2 for web application?

Viewed 3115

I have html like this for slides

<ion-slides   [pager]="false" slidesPerView="6" #slider_a>
        <ion-slide  *ngFor="let slide of  items_a " #ddd>
            <ion-card class="list-card" >
                <div class="cardInnerWrap">
                    <ion-item>
                      {{slide.gameTitle}}
                    </ion-item>
                     <img src="{{slide.gameImage}}">

                </div>
            </ion-card>
        </ion-slide>
</ion-slides>

<ion-slides   [pager]="false" slidesPerView="6" #slider_b>
        <ion-slide  *ngFor="let slide of  items_b " #ddd>
            <ion-card class="list-card" >
                <div class="cardInnerWrap">
                    <ion-item>
                      {{slide.gameTitle}}
                    </ion-item>
                     <img src="{{slide.gameImage}}">

                </div>
            </ion-card>
        </ion-slide>
</ion-slides>

its working in mobile device. problem is when i drag slide 2 in Firefox(also in chrome) , slide 1 also getting dragged. cant drag slide 2 alone. How can i make 2 completely independent slider in ionic 2 that work in browser

2 Answers

I found working solution here

HTML:

<ion-header no-border>
  <ion-navbar transparent>
    <ion-title>Custom Pagination</ion-title>
  </ion-navbar>
</ion-header>
<ion-content text-center>
  <h3>Pagination numbers</h3>
  <ion-slides #sliderOne pager (ionDidChange)="onSlideChanged()">
    <ion-slide *ngFor="let slide of slides"
               [ngStyle]="{'background' : 'url(' + slide.imageUrl + ')'}">
      <h2>{{slide.title}}</h2>
    </ion-slide>
  </ion-slides>


  <h3>Pagination numbers 2</h3>
  <ion-slides #sliderTwo pager (ionDidChange)="onSlideChanged()">
    <ion-slide *ngFor="let slide of slides"
               [ngStyle]="{'background' : 'url(' + slide.imageUrl + ')'}">
      <h2>{{slide.title}}</h2>
    </ion-slide>
  </ion-slides>


  <h3>Pagination icons</h3>
  <ion-slides #sliderThree pager (ionDidChange)="onSlideChanged()">
    <ion-slide *ngFor="let slide of slides"
               [ngStyle]="{'background' : 'url(' + slide.imageUrl + ')'}">
      <h2>{{slide.title}}</h2>
    </ion-slide>
  </ion-slides>
</ion-content>

TS:

import { Component, ViewChild } from '@angular/core';
import { NavController, Slides, IonicPage } from 'ionic-angular';

@IonicPage()
@Component({
  selector: 'page-slide-custom-pagination',
  templateUrl: 'slide-custom-pagination.html'
})
export class SlideCustomPaginationPage {
  @ViewChild('sliderOne') sliderOne: Slides;
  @ViewChild('sliderTwo') sliderTwo: Slides;
  @ViewChild('sliderThree') sliderThree: Slides;

  slides = [
    {
      title: 'Dream\'s Adventure',
      imageUrl: 'assets/img/lists/wishlist-1.jpg',
      songs: 2,
      private: false
    },
    {
      title: 'For the Weekend',
      imageUrl: 'assets/img/lists/wishlist-2.jpg',
      songs: 4,
      private: false
    },
    {
      title: 'Family Time',
      imageUrl: 'assets/img/lists/wishlist-3.jpg',
      songs: 5,
      private: true
    },
    {
      title: 'My Trip',
      imageUrl: 'assets/img/lists/wishlist-4.jpg',
      songs: 12,
      private: true
    }
  ];

  constructor(public navCtrl: NavController) { }

  ngAfterViewInit() {
    this.sliderOne.paginationBulletRender = (index, className) => {
      return `<span class="custom-pagination ${className}>${index + 1}</\span>`;
    };

    this.sliderTwo.paginationBulletRender = (index, className) => {
      return `<span class="custom-pagination-2 ${className}>${index + 1}</\span>`;
    };

    this.sliderThree.paginationBulletRender = (index, className) => {
      return `<span class="custom-pagination-3 bullet-icon-${index + 1} ${className}></\span>`;
    };
  }
}
Related