diff options
author | 杨宇千 <crupest@outlook.com> | 2019-03-11 19:52:29 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-11 19:52:29 +0800 |
commit | 8caef17dd3e455de27f44d13751c27ee4dfe2e1e (patch) | |
tree | 5b485ad438c9be9c180d425453588ff1c575a42d /Timeline/ClientApp/src/app/utilities/debounce-click.directive.ts | |
parent | 17d90077b289c6b2203a34de727dd77c1985f146 (diff) | |
parent | b26342764046d188d223aa494c3bbbf76deb4927 (diff) | |
download | timeline-8caef17dd3e455de27f44d13751c27ee4dfe2e1e.tar.gz timeline-8caef17dd3e455de27f44d13751c27ee4dfe2e1e.tar.bz2 timeline-8caef17dd3e455de27f44d13751c27ee4dfe2e1e.zip |
Merge pull request #11 from crupest/7-user-route
Use named route in user dialog.
Diffstat (limited to 'Timeline/ClientApp/src/app/utilities/debounce-click.directive.ts')
-rw-r--r-- | Timeline/ClientApp/src/app/utilities/debounce-click.directive.ts | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/Timeline/ClientApp/src/app/utilities/debounce-click.directive.ts b/Timeline/ClientApp/src/app/utilities/debounce-click.directive.ts new file mode 100644 index 00000000..feb0404e --- /dev/null +++ b/Timeline/ClientApp/src/app/utilities/debounce-click.directive.ts @@ -0,0 +1,39 @@ +import { Directive, Output, Input, EventEmitter, ElementRef, OnInit, OnDestroy } from '@angular/core'; +import { fromEvent, Subscription } from 'rxjs'; +import { debounceTime } from 'rxjs/operators'; + +@Directive({ + selector: '[appDebounceClick]' +}) +export class DebounceClickDirective implements OnInit, OnDestroy { + + private subscription: Subscription; + + @Output('appDebounceClick') clickEvent = new EventEmitter<any>(); + + // tslint:disable-next-line:no-input-rename + @Input('appDebounceClickTime') + set debounceTime(value: number) { + if (this.subscription) { + this.subscription.unsubscribe(); + } + this.subscription = fromEvent(<HTMLElement>this.element.nativeElement, 'click').pipe( + debounceTime(value) + ).subscribe(o => this.clickEvent.emit(o)); + } + + constructor(private element: ElementRef) { + } + + ngOnInit() { + if (!this.subscription) { + this.subscription = fromEvent(<HTMLElement>this.element.nativeElement, 'click').pipe( + debounceTime(500) + ).subscribe(o => this.clickEvent.emit(o)); + } + } + + ngOnDestroy() { + this.subscription.unsubscribe(); + } +} |