Ngx-drag-scroll: Starten von ngx-drag-scroll ab dem angegebenen Index

Erstellt am 21. Okt. 2018  ·  7Kommentare  ·  Quelle: bfwg/ngx-drag-scroll

  • Ich schicke ein ...

    • [ ] Fehlerbericht
    • [x] Funktionsanfrage
    • [ ] Supportanfrage => Bitte reichen Sie hier keine Supportanfrage ein, siehe Hinweis oben in dieser Vorlage.
  • 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.

feature request

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:

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

Alle 7 Kommentare

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);
}
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen