参考网上的方法https://stackoverflow.com/questions/36755625/how-to-import-jquery-and-mcustomscrollbar-plugin-into-angular2-component

对其配置,有的时候会出现问题,可以尝试更换一下mCustomScrollbar的版本。

可以不用install在项目里,直接将所需的js和css下载下来后放在项目的静态文件夹目录下。然后在angular.json里对其引用。

如下图为必须文件:

一些扩展功能需要mousewheel.js。

然后在angular.json里引用:

插件是基于jquery的,所以需要先引用jquery。

这样基本的就处理好了,去将其自定义为指令就可以在项目里随处使用啦。

以下为定义指令文件代码:

import {Directive, ElementRef, OnInit, Output, EventEmitter} from '@angular/core';
// import * as $ from 'jquery';
declare var $: any;
@Directive({
selector: 'perfect-scrollbar',
host: {'class': 'mCustomScrollbar'}
})
export class ScrollbarComponent implements OnInit {
@Output() psYReachEnd = new EventEmitter();
el: ElementRef;
constructor(el: ElementRef) {
this.el = el;
}
ngOnInit() {
const psYReachEnd = this.psYReachEnd;
// console.log(this.el);
// console.log($('.mCustomScrollbar'));
let scrollAxis = 'y';
if (this.el.nativeElement.getAttribute('data-scroll') === 'X') {
scrollAxis = 'x';
}
$(this.el.nativeElement).mCustomScrollbar({
autoHideScrollbar: true,
setHeight: '100%',
theme: 'light',
axis: scrollAxis,
callbacks: {
whileScrolling: function(){  // 只要滚动条滚动,这个函数就会执行
if (this.mcs.topPct >= 99) { // 这表示当滚动条滚动到这个div的90%(当然这个值是可变的)的时候调用下面的代码,
psYReachEnd.emit();
}
}
/*onTotalScroll: () => {
this.psYReachEnd.emit();
}*/
}
});
}
}

其中使用@Output和EventEmitter自定义事件,然后在滚动条插件的配置里,配置好当滚动到底部时通过emit()去触发这个自定义的事件。插件的callbacks的所有方法可以查看插件官网的说明。http://manos.malihu.gr/jquery-custom-content-scroller/#callbacks-section

https://www.cnblogs.com/LY-leo/p/5750059.html

自定义事件说明:Angular 4.x Events Bubblinghttps://segmentfault.com/a/1190000009149495

以下为html使用指令时的代码:

<perfect-scrollbar style="max-height: 366px" (psYReachEnd)="psYReachEnd('getCertification')" *ngIf="Certifications.length>0">
  内容
</perfect-scrollbar>

这里的psYReachEnd是在指令里自己定义的一个事件,为啦实现在滚动条滚到底部请求新数据更新数据。

在组件里定义的滚动到底部触发自定义事件后调用的方法:

最新文章

  1. Tomcat下conf下server.xml的文件配置信息
  2. keepalived 原主上线时vip漂移情况
  3. iframe无刷新跨域并获得返回值
  4. taiyi_interview(Introduction To Database Refactoring)
  5. UWP ComboBox下拉选项滚动循环问题
  6. php安装json模块
  7. PHP中的赋值运算符
  8. 对git认识
  9. HTML第二天学习笔记
  10. String, StringBuilder, StringBuffer问题
  11. linux XAMPP安装与使用
  12. UVW源码漫谈(四)
  13. pat 1014 1017 排队类问题
  14. 我的第一个Angular2应用
  15. HDU1263水果
  16. TCP可靠数据传输
  17. 剑指Offer(9)
  18. I/O模型之四:Java 浅析I/O模型(BIO、NIO、AIO、Reactor、Proactor)
  19. BizTalk RosettaNet 配置导入与导出
  20. datepicker动态初始化

热门文章

  1. js捕获页面回车事件
  2. css文字换行问题white-space:pre-line或者white-space:pre-wrap,解决word-wrap:break-word解决不了的
  3. Windows窗体应用布局详解
  4. Android ViewPager系列之ViewPager一屏显示多个子页面
  5. Codeforces 982 C. Cut &#39;em all!(dfs)
  6. Js jquery常用的身份证号码 邮箱电话等验证
  7. 使用TensorFlow编写常用模块的Python代码示例
  8. ztree连接数据库,实现下拉菜单
  9. How Javascript works (Javascript工作原理) (五) 深入理解 WebSockets 和带有 SSE 机制的HTTP/2 以及正确的使用姿势
  10. IFC2x3标准阅读