@@ -10,13 +10,7 @@ import {
10
10
Renderer2
11
11
} from '@angular/core' ;
12
12
import { Subscription } from 'rxjs' ;
13
- import {
14
- distinctUntilChanged ,
15
- pairwise ,
16
- filter ,
17
- map ,
18
- mergeMap
19
- } from 'rxjs/operators' ;
13
+ import { distinctUntilChanged , pairwise , filter , map } from 'rxjs/operators' ;
20
14
import { DraggableHelper } from './draggable-helper.provider' ;
21
15
22
16
function isCoordinateWithinRectangle (
@@ -80,9 +74,13 @@ export class DroppableDirective implements OnInit, OnDestroy {
80
74
let droppableRectangle = this . element . nativeElement . getBoundingClientRect ( ) ;
81
75
82
76
/* istanbul ignore next */
83
- this . renderer . listen ( 'window' , 'scroll' , ( ) => {
84
- droppableRectangle = this . element . nativeElement . getBoundingClientRect ( ) ;
85
- } ) ;
77
+ const deregisterScrollListener = this . renderer . listen (
78
+ 'window' ,
79
+ 'scroll' ,
80
+ ( ) => {
81
+ droppableRectangle = this . element . nativeElement . getBoundingClientRect ( ) ;
82
+ }
83
+ ) ;
86
84
87
85
let currentDragDropData : any ;
88
86
const overlaps$ = drag$ . pipe (
@@ -141,8 +139,9 @@ export class DroppableDirective implements OnInit, OnDestroy {
141
139
} ) ;
142
140
} ) ;
143
141
144
- drag$ . pipe ( mergeMap ( ( ) => overlaps$ ) ) . subscribe ( {
142
+ drag$ . subscribe ( {
145
143
complete : ( ) => {
144
+ deregisterScrollListener ( ) ;
146
145
if ( dragOverActive ) {
147
146
this . renderer . removeClass (
148
147
this . element . nativeElement ,
0 commit comments