Как вы учитываете положение полосы прокрутки при динамическом изменении размеров элементов в угловых 2+? - PullRequest
0 голосов
/ 25 октября 2019

В моем приложении у меня есть директива, которая может применяться к элементам div, которые позволят им изменить размер. Однако, если полоса прокрутки вообще переместилась, я не смогу изменить ее размер, если только полоса прокрутки не вернулась наверх. Я знаю способ отследить положение полосы прокрутки, но не уверен, где его применить. Вот где я отслеживаю позицию прокрутки

public last_known_scroll_position = 0;

@HostListener('window:scroll', ['$event']) 
trackScrollBarPos() {
  this.last_known_scroll_position = window.pageYOffset;
}

private inDragRegion(evt: MouseEvent) {
  this.trackScrollBarPos();
  if(this.orientation == "horizontal"){
    return this.el.nativeElement.clientWidth - evt.clientX + this.el.nativeElement.offsetLeft < this.resizableGrabWidth;
  }else if(this.orientation == "vertical"){
   return this.el.nativeElement.clientHeight - evt.clientY + 

  this.el.nativeElement.offsetTop < this.resizableGrabHeight;
  }
}

Где я могу указать последнюю известную позицию полосы прокрутки в моем уравнении или я ошибаюсь? Опять же, приложение работает нормально, если полоса прокрутки отсутствует.

Полный приведенный ниже код стека приведен ниже https://stackblitz.com/edit/angular-zq5adw

1 Ответ

0 голосов
/ 26 октября 2019

Используйте pageX / pageY вместо свойств clientX / clientY MouseEvent. Они относятся к размеру страницы, а не к размеру области просмотра, поэтому прокрутка не влияет на них. Отредактированное приложение .

...