Ngx-drag-scroll: Iniciando ngx-drag-scroll desde el índice especificado

Creado en 21 oct. 2018  ·  7Comentarios  ·  Fuente: bfwg/ngx-drag-scroll

  • Estoy enviando un...

    • [ ] informe de error
    • [x] solicitud de función
    • [ ] solicitud de soporte => No envíe una solicitud de soporte aquí, vea la nota en la parte superior de esta plantilla.
  • ¿Desea solicitar una característica o informar un error ?

¿Es posible iniciar el dragscroll desde otro índice que no sea 0?

  • ¿Cuál es el comportamiento actual?
    En este momento, el desplazamiento de arrastre comienza desde la primera imagen/componente de forma predeterminada.

  • ¿Cuál es la motivación/caso de uso para cambiar el comportamiento?
    Sería bueno elegir el índice donde comenzar el dragscroll (en carga).

feature request

Comentario más útil

En realidad, puede lograr establecer el índice inicial llamando a moveTo en el bloque `ngAfterViewInit. Asegúrese de ajustar la llamada con setTimeout(() => {...}, 0);
Por ejemplo:

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

Todos 7 comentarios

En realidad, puede lograr establecer el índice inicial llamando a moveTo en el bloque `ngAfterViewInit. Asegúrese de ajustar la llamada con setTimeout(() => {...}, 0);
Por ejemplo:

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

ya lo intenté ..., desafortunadamente recibo este error cada vez:

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)

¿Estás llamando a moveTo dentro de un bloque ngAfterViewInit ? Se puede llamar al método moveTo cuando el elemento del carrusel de arrastre y desplazamiento está visible en la página.
O puede agregar un poco de retraso e intentarlo de nuevo como:

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

déjame saber si eso funciona.

Yo hice. ¡Pero con un tiempo de espera de 1s ahora funciona! Gracias por la ayuda, aunque es un poco hacky.

Hmm, sin mirar el código no puedo entender por qué ngAfterViewInit no funciona para ti. Diría que use el setTimeout por ahora hasta que esta función esté disponible. Un PR es más que bienvenido.

En realidad, puede lograr establecer el índice inicial llamando a moveTo en el bloque `ngAfterViewInit. Asegúrese de ajustar la llamada con setTimeout(() => {...}, 0);
Por ejemplo:

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

Hola, agregue esta característica en la documentación.

si utilizo esta solución, el usuario verá la animación con el primer elemento moviéndose al elemento específico.
Yo sugeriría a continuación. ¿Crees que si está bien?

ngAfterViewInit(){
  setTimeout(()=>{
    this.ds.currIndex = 3;
    this.ds._elementRef.nativeElement.children[0].scrollLeft = someValue;
  }, 10);
}
¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

CrackerakiUA picture CrackerakiUA  ·  25Comentarios

tommykamkcm picture tommykamkcm  ·  17Comentarios

IlCallo picture IlCallo  ·  14Comentarios

bfwg picture bfwg  ·  13Comentarios

bfwg picture bfwg  ·  8Comentarios