Je soumets un...
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).
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);
}
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: