Ngx-drag-scroll: Démarrage de ngx-drag-scroll à partir de l'index spécifié

Créé le 21 oct. 2018  ·  7Commentaires  ·  Source: bfwg/ngx-drag-scroll

  • Je soumets un...

    • [ ] rapport d'erreur
    • [x] demande de fonctionnalité
    • [ ] demande d'assistance => Veuillez ne pas soumettre de demande d'assistance ici, voir la note en haut de ce modèle.
  • Vous souhaitez demander une fonctionnalité ou signaler un bug ?

Est-il possible de démarrer le dragscroll à partir d'un autre index que 0 ?

  • Quel est le comportement actuel ?
    À l'heure actuelle, le dragscroll commence par défaut à partir de la toute première image/composant.

  • Quelle est la motivation / le cas d'utilisation pour changer le comportement ?
    Ce serait bien de choisir l'index où commencer le dragscroll (au chargement).

feature request

Commentaire le plus utile

Vous pouvez en fait définir l'index initial en appelant moveTo dans le bloc `ngAfterViewInit. Assurez-vous d'envelopper l'appel avec setTimeout(() => {...}, 0);
Par exemple:

  @ViewChild('nav', {read: DragScrollComponent}) ds: DragScrollComponent;
  ngAfterViewInit() {
    setTimeout(() => {
      this.ds.moveTo(3);
    }, 0);
  }

Tous les 7 commentaires

Vous pouvez en fait définir l'index initial en appelant moveTo dans le bloc `ngAfterViewInit. Assurez-vous d'envelopper l'appel avec setTimeout(() => {...}, 0);
Par exemple:

  @ViewChild('nav', {read: DragScrollComponent}) ds: DragScrollComponent;
  ngAfterViewInit() {
    setTimeout(() => {
      this.ds.moveTo(3);
    }, 0);
  }

déjà essayé .., malheureusement, j'obtiens cette erreur à chaque fois:

core.js:1673 ERROR TypeError: Cannot read property '_elementRef' of undefined at DragScrollComponent.push../node_modules/ngx-drag-scroll/lib/ngx-drag-scroll.js.DragScrollComponent.maximumIndex (ngx-drag-scroll.js:415) at DragScrollComponent.push../node_modules/ngx-drag-scroll/lib/ngx-drag-scroll.js.DragScrollComponent.moveTo (ngx-drag-scroll.js:214) at myComponent.component.ts:141 at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421) at Object.onInvokeTask (core.js:3815) at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420) at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188) at push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask (zone.js:496) at ZoneTask.invoke (zone.js:485) at timer (zone.js:2054)

Appelez-vous moveTo dans le bloc ngAfterViewInit ? La méthode moveTo peut être appelée lorsque l'élément du carrousel de défilement par glissement est visible sur la page.
Ou vous pouvez ajouter un peu de retard et réessayer comme :

    setTimeout(() => {
      this.ds.moveTo(3);
    }, 1000);

faites-moi savoir si cela fonctionne.

J'ai fait. Mais avec un timeout de 1s maintenant ça marche ! Merci pour l'aide, même si c'est un peu bidon.

Hmm, sans regarder le code, je ne peux pas comprendre pourquoi ngAfterViewInit ne fonctionne pas pour vous. Je dirais d'utiliser le setTimeout pour l'instant jusqu'à ce que cette fonctionnalité soit disponible. Un PR est plus que bienvenu.

Vous pouvez en fait définir l'index initial en appelant moveTo dans le bloc `ngAfterViewInit. Assurez-vous d'envelopper l'appel avec setTimeout(() => {...}, 0);
Par exemple:

  @ViewChild('nav', {read: DragScrollComponent}) ds: DragScrollComponent;
  ngAfterViewInit() {
    setTimeout(() => {
      this.ds.moveTo(3);
    }, 0);
  }

Salut s'il vous plaît ajouter cette fonctionnalité dans la documentation.

si j'utilise cette solution, l'utilisateur verra l'animation avec le premier élément se déplacer vers l'élément spécifique.
Je suggérerais ci-dessous. Vous pensez si c'est ok ?

ngAfterViewInit(){
  setTimeout(()=>{
    this.ds.currIndex = 3;
    this.ds._elementRef.nativeElement.children[0].scrollLeft = someValue;
  }, 10);
}
Cette page vous a été utile?
0 / 5 - 0 notes