Ngx-drag-scroll: 指定されたインデックスからngx-drag-scrollを開始します

作成日 2018年10月21日  ·  7コメント  ·  ソース: bfwg/ngx-drag-scroll

  • 私は提出しています...

    • []バグレポート
    • [x]機能リクエスト
    • []サポートリクエスト=>ここではサポートリクエストを送信しないでください。このテンプレートの上部にある注を参照してください。
  • 機能をリクエストしますか、それともバグを報告しますか?

0以外のインデックスからドラッグスクロールを開始することは可能ですか?

  • 現在の動作は何ですか?
    現在、ドラッグスクロールはデフォルトで最初の画像/コンポーネントから開始しています。

  • 行動を変える動機/ユースケースは何ですか?
    ドラッグスクロールを開始するインデックスを選択すると便利です(ロード時)。

feature request

最も参考になるコメント

`ngAfterViewInitブロックでmoveToを呼び出すことにより、実際に初期インデックスの設定を実現できます。 必ずsetTimeout(()=> {...}、0);で呼び出しをラップしてください。
例えば:

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

全てのコメント7件

`ngAfterViewInitブロックでmoveToを呼び出すことにより、実際に初期インデックスの設定を実現できます。 必ずsetTimeout(()=> {...}、0);で呼び出しをラップしてください。
例えば:

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

すでに試しましたが、残念ながら毎回このエラーが発生します。

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)

ngAfterViewInitブロック内で$ moveToを呼び出していますか? moveToメソッドは、ドラッグスクロールカルーセル要素がページに表示されているときに呼び出すことができます。
または、少し遅延を追加して、次のように再試行することもできます。

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

それがうまくいくかどうか私に知らせてください。

やった。 しかし、1秒のタイムアウトで動作します! 少しハッキーですが、助けてくれてありがとう。

うーん、コードを見ないと、 ngAfterViewInitがうまくいかない理由がわかりません。 この機能がなくなるまで、今のところsetTimeoutを使用すると思います。 PRは大歓迎です。

`ngAfterViewInitブロックでmoveToを呼び出すことにより、実際に初期インデックスの設定を実現できます。 必ずsetTimeout(()=> {...}、0);で呼び出しをラップしてください。
例えば:

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

こんにちは、ドキュメントにこの機能を追加してください。

このソリューションを使用すると、最初のアイテムが特定のアイテムに移動するアニメーションがユーザーに表示されます。
以下に提案します。 大丈夫かと思いますか?

ngAfterViewInit(){
  setTimeout(()=>{
    this.ds.currIndex = 3;
    this.ds._elementRef.nativeElement.children[0].scrollLeft = someValue;
  }, 10);
}
このページは役に立ちましたか?
0 / 5 - 0 評価