@HostListener('mousedown', ['$event']) onMouseDown(event: MouseEvent) { this.mouseStart = {x: event.pageX, y: event.pageY}; const mouseup$ = Observable.fromEvent(document, 'mouseup'); this._subscription = mouseup$.subscribe(() => this.onMouseup()); const mousemove$ = Observable.fromEvent(document, 'mousemove') .pipe(takeUntil(mouseup$)) .subscribe((e: MouseEvent) => this.onMouseMove(e)); this._subscription.add(mousemove$); }