码迷,mamicode.com
首页 > 其他好文 > 详细

angular 防抖点击

时间:2020-06-02 19:03:48      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:ext   dir   str   sub   his   loading   from   operator   rip   

1.创建指令文件

ng g directive DebounceClickDirective --module=app

2.debounce-click-directive.directive.spec.ts 检查,确保导入正确

3.debounce-click-directive.directive.ts 文件代码

import { Directive, EventEmitter, HostListener, OnInit, Output, Input } from ‘@angular/core‘;
import { Subject } from ‘rxjs‘;
import { debounceTime } from ‘rxjs/operators‘;
import { Subscription } from ‘rxjs‘;

@Directive({
  selector: ‘[appDebounceClick]‘
})
export class DebounceClickDirective implements OnInit {
  @Input() debounceTime = 500;
  @Output() debounceClick = new EventEmitter();
  private clicks = new Subject();
  private subscription: Subscription;

  constructor() { }

  ngOnInit() {
    this.subscription = this.clicks.pipe(
      debounceTime(this.debounceTime)
    ).subscribe(e => this.debounceClick.emit(e));
  }

  ngOnDestroy() {
    this.subscription.unsubscribe();
  }

  @HostListener(‘click‘, [‘$event‘])
  clickEvent(event) {
    event.preventDefault();
    event.stopPropagation();
    this.clicks.next(event);
  }
}

 

4.HTML中使用

  <button (click)="myappDebounceClick()">即刻執行</button>
  <button appDebounceClick (debounceClick)="myappDebounceClick()">使用默認時間間隔來執行</button>
  <button appDebounceClick (debounceClick)="myappDebounceClick()" [debounceTime]="2000">自定義時間執行Debounced12
    Click</button>

 

5. 我的是分模块的,所以用的时候,需要把指令导入到shared.module.ts

技术图片

 

 

 技术图片技术图片

 

 

 

6.然后需要使用的页面中使用,需要在对应的module.ts中引用shared

原文地址:https://www.cnblogs.com/sugartang/p/12485053.html

angular 防抖点击

标签:ext   dir   str   sub   his   loading   from   operator   rip   

原文地址:https://www.cnblogs.com/zhawei/p/13032735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!