Ich schicke ein ...
Möchten Sie eine Funktion anfordern oder einen Fehler melden?
Ist es möglich, den Dragscroll von einem anderen Index als 0 zu starten?
Wie ist das aktuelle Verhalten?
Im Moment beginnt der Dragscroll standardmäßig mit dem allerersten Bild/Komponente.
Was ist die Motivation / der Anwendungsfall für die Änderung des Verhaltens?
Es wäre schön, den Index zu wählen, wo der Dragscroll (beim Laden) beginnen soll.
Sie können den Anfangsindex tatsächlich setzen, indem Sie moveTo
im `ngAfterViewInit-Block aufrufen. Achten Sie darauf, den Aufruf mit setTimeout(() => {...}, 0) zu umbrechen;
Zum Beispiel:
@ViewChild('nav', {read: DragScrollComponent}) ds: DragScrollComponent;
ngAfterViewInit() {
setTimeout(() => {
this.ds.moveTo(3);
}, 0);
}
schon probiert.., leider bekomme ich jedesmal diesen Fehler:
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)
Rufen Sie moveTo
innerhalb des Blocks ngAfterViewInit
an? Die moveTo
-Methode kann aufgerufen werden, wenn das Drag-Scroll-Karussellelement auf der Seite sichtbar ist.
Oder Sie können eine kleine Verzögerung hinzufügen und es erneut versuchen:
setTimeout(() => {
this.ds.moveTo(3);
}, 1000);
lass mich wissen, ob das funktioniert.
Ich tat. Aber mit Timeout von 1s funktioniert es jetzt! Danke für die Hilfe, obwohl es ein bisschen hacky ist.
Hmm, ohne mir den Code anzusehen, kann ich nicht herausfinden, warum ngAfterViewInit
bei dir nicht funktioniert. Ich würde sagen, verwenden setTimeout
, bis diese Funktion nicht mehr verfügbar ist. Eine PR ist mehr als willkommen.
Sie können den Anfangsindex tatsächlich setzen, indem Sie
moveTo
im `ngAfterViewInit-Block aufrufen. Achten Sie darauf, den Aufruf mit setTimeout(() => {...}, 0) zu umbrechen;
Zum Beispiel:@ViewChild('nav', {read: DragScrollComponent}) ds: DragScrollComponent; ngAfterViewInit() { setTimeout(() => { this.ds.moveTo(3); }, 0); }
Hallo, bitte fügen Sie diese Funktion in die Dokumentation ein.
Wenn ich diese Lösung verwende, sieht der Benutzer die Animation mit dem ersten Element, das zu dem bestimmten Element wechselt.
Ich würde unten vorschlagen. Meint ihr ob es ok ist?
ngAfterViewInit(){
setTimeout(()=>{
this.ds.currIndex = 3;
this.ds._elementRef.nativeElement.children[0].scrollLeft = someValue;
}, 10);
}
Hilfreichster Kommentar
Sie können den Anfangsindex tatsächlich setzen, indem Sie
moveTo
im `ngAfterViewInit-Block aufrufen. Achten Sie darauf, den Aufruf mit setTimeout(() => {...}, 0) zu umbrechen;Zum Beispiel: