Rxjs 自动滚动拖放(dom自动滚动)

Rxjs 自动滚动拖放(dom自动滚动),rxjs,ng2-dragula,Rxjs,Ng2 Dragula,我有一个text元素列表,当我拖动新元素时,我想自动将列表滚动到底部 当我拖放列表中的一个元素时,下面的示例可以正常工作 我相信我需要在拖动之前调用一次可观察的 我使用的是dragula和dom autoscrolling import {takeUntil} from "rxjs/internal/operators/takeUntil"; import * as autoScroll from 'dom-autoscroller'; const drake = this.dragulaSe

我有一个
text
元素列表,当我拖动新元素时,我想自动将列表滚动到底部

当我拖放列表中的一个元素时,下面的示例可以正常工作

我相信我需要在拖动之前调用一次可观察的

我使用的是
dragula
dom autoscrolling

import {takeUntil} from "rxjs/internal/operators/takeUntil";
import * as autoScroll from 'dom-autoscroller';

const drake = this.dragulaService.find(this.dragulaBagName);
this.dragulaService.drag.pipe(
  takeUntil(this.destroyed$),
).subscribe(([bag, movingEl, containerEl]) => {
  autoScroll(containerEl.parentNode, {
    margin: 20,
    pixels: 10,
    scrollWhenOutside: true,
    autoScroll: function () {
      return this.down && drake && drake.drake && drake.drake.dragging;
    }
  });
});
显然,callback
autoScroll
中的
this.down
在开始时设置为false。。。拖放一次后,它将正常工作

有什么想法吗?

尝试使用(mousedown)=“initAutoScroll()


我不知道,如果我的容器的完全滚动高度是11000 px,则<代码>容器,PaleNoths(或<代码> PARNECTONE < /COD> >的高度必须是有限的,比如说800 px,以便自动扫描器将鼠标放在它的边缘附近,而不是一个额外的包装DIV,它也是1100px,所以不自动滚动。
initAutoScroll(){
  const drake = this.dragulaService.find(this.dragulaBagName);
  this.scroll = autoScroll(
  containerEl.parentNode,
  {
    margin: 30,
    maxSpeed: 25,
    scrollWhenOutside: true,

    autoScroll: function () { 
      return this.down && drake.drake.dragging;
    }
  });
}


this.dragulaService.dragend.asObservable().subscribe(value => {
  if (this.scroll) {
    this.scroll.destroy();  // destroy when don't use auto-scroll
  }
});