Как использовать вспомогательные функции в ngx-perfect-scrollbar? - PullRequest
0 голосов
/ 10 марта 2020

Библиотека Angular *1001* Perfect Scrollbar * содержит несколько «доступных функций управления / вспомогательных функций (предусмотренных директивой)»:

ps() // Возвращает ссылку на экземпляр PS.

update() // Обновляет размер и положение полосы прокрутки.

geometry(prefix) // Возвращает геометрию с указанным префиксом. position(absolute) // Возвращает точку охвата или абсолютную позицию прокрутки.

scrollable(direction) // Проверяет, можно ли прокрутить данное направление. // Направление может быть: «любое», «оба», «х», «у»

scrollTo(x, y, speed?) // Анимация прокрутки до заданных координат х, у.

scrollToY(position, speed?) // Анимация прокрутки до заданной вертикальной позиции.

// ...

Однако я не нашел примера того, как их достичь ... Я попытался объявить переменную в своем конструктор компонента через pfscroll: PerfectScrollbarDirective (импортированный из 'ngx-perfect-scrollbar'), который разрешает доступ к этим функциям (например, pfscroll.update()), но возникает следующая ошибка, и мой компонент останавливает рендеринг:

DescriptionDialogComponent_Host .ngfactory. js? [см]: 1

ОШИБКА NullInjectorError: StaticInjectorError (AppModule) [DescriptionDialogComponent -> PerfectScrollbarDirective]:

StaticInjectorError (платформа: ядро) [DescriptionDialogComponent -> PerfectScrollbarDirective]] NullInjectorError: Нет поставщика для PerfectScrollbarDirective!

Во время написания этого вопроса я наткнулся на решение , которое использовалось напрямую PerfectScrollbarComponent для достижения директивы через ссылку на компонент.

Я пытался это сделать:

import { PerfectScrollbarComponent, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar';

export class MyComponent implements OnInit {
  @ViewChild(PerfectScrollbarComponent) public pfScrollComponent: PerfectScrollbarComponent;

  constructor () {}

  ngOnInit() {
    if (this.pfScrollComponent) {
      const pfScrollDirective: PerfectScrollbarDirective = this.pfScrollComponent.directiveRef;
      console.log('dir', pfScrollDirective.ps());
    }
  }
}

Но значение переменной (this.pfScrollComponent) компонента всегда undefined , что привело меня к другому решению, которое импортировало во избежание этой проблемы оригинальный / не Angular пакет Perfect Scroll . Это, хотя и умно, но, к сожалению, это неправильный путь к go, так как вся концепция использования библиотеки-обертки ngx потеряна ...

Может кто-нибудь найти правильное решение для этой проблемы или есть правильное решение? способ получить доступ к этим функциям директивы?

...