Библиотека 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 потеряна ...
Может кто-нибудь найти правильное решение для этой проблемы или есть правильное решение? способ получить доступ к этим функциям директивы?