Estoy enviando un...
¿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).
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);
}
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: