@@ -15,9 +15,10 @@ import {
1515 Output ,
1616 Renderer2
1717} from '@angular/core' ;
18- import { fromEvent , Subject } from 'rxjs' ;
18+ import { fromEvent } from 'rxjs' ;
1919import { takeUntil } from 'rxjs/operators' ;
2020
21+ import { NzDestroyService } from 'ng-zorro-antd/core/services' ;
2122import { BooleanInput } from 'ng-zorro-antd/core/types' ;
2223import { ensureInBounds , InputBoolean } from 'ng-zorro-antd/core/util' ;
2324
@@ -35,7 +36,7 @@ export interface NzResizeEvent {
3536@Directive ( {
3637 selector : '[nz-resizable]' ,
3738 exportAs : 'nzResizable' ,
38- providers : [ NzResizableService ] ,
39+ providers : [ NzResizableService , NzDestroyService ] ,
3940 host : {
4041 class : 'nz-resizable' ,
4142 '[class.nz-resizable-resizing]' : 'resizing' ,
@@ -68,38 +69,38 @@ export class NzResizableDirective implements AfterViewInit, OnDestroy {
6869 private ghostElement : HTMLDivElement | null = null ;
6970 private el ! : HTMLElement ;
7071 private sizeCache : NzResizeEvent | null = null ;
71- private destroy$ = new Subject < void > ( ) ;
7272
7373 constructor (
7474 private elementRef : ElementRef < HTMLElement > ,
7575 private renderer : Renderer2 ,
7676 private nzResizableService : NzResizableService ,
7777 private platform : Platform ,
78- private ngZone : NgZone
78+ private ngZone : NgZone ,
79+ private destroy$ : NzDestroyService
7980 ) {
80- this . nzResizableService . handleMouseDown $. pipe ( takeUntil ( this . destroy$ ) ) . subscribe ( event => {
81+ this . nzResizableService . handleMouseDownOutsideAngular $. pipe ( takeUntil ( this . destroy$ ) ) . subscribe ( event => {
8182 if ( this . nzDisabled ) {
8283 return ;
8384 }
8485 this . resizing = true ;
8586 this . nzResizableService . startResizing ( event . mouseEvent ) ;
8687 this . currentHandleEvent = event ;
8788 this . setCursor ( ) ;
88- this . nzResizeStart . emit ( {
89- mouseEvent : event . mouseEvent
90- } ) ;
89+ if ( this . nzResizeStart . observers . length ) {
90+ this . ngZone . run ( ( ) => this . nzResizeStart . emit ( { mouseEvent : event . mouseEvent } ) ) ;
91+ }
9192 this . elRect = this . el . getBoundingClientRect ( ) ;
9293 } ) ;
9394
94- this . nzResizableService . documentMouseUp $. pipe ( takeUntil ( this . destroy$ ) ) . subscribe ( event => {
95+ this . nzResizableService . documentMouseUpOutsideAngular $. pipe ( takeUntil ( this . destroy$ ) ) . subscribe ( event => {
9596 if ( this . resizing ) {
9697 this . resizing = false ;
97- this . nzResizableService . documentMouseUp $. next ( ) ;
98+ this . nzResizableService . documentMouseUpOutsideAngular $. next ( ) ;
9899 this . endResize ( event ) ;
99100 }
100101 } ) ;
101102
102- this . nzResizableService . documentMouseMove $. pipe ( takeUntil ( this . destroy$ ) ) . subscribe ( event => {
103+ this . nzResizableService . documentMouseMoveOutsideAngular $. pipe ( takeUntil ( this . destroy$ ) ) . subscribe ( event => {
103104 if ( this . resizing ) {
104105 this . resize ( event ) ;
105106 }
@@ -312,21 +313,19 @@ export class NzResizableDirective implements AfterViewInit, OnDestroy {
312313 fromEvent ( this . el , 'mouseenter' )
313314 . pipe ( takeUntil ( this . destroy$ ) )
314315 . subscribe ( ( ) => {
315- this . nzResizableService . mouseEntered $. next ( true ) ;
316+ this . nzResizableService . mouseEnteredOutsideAngular $. next ( true ) ;
316317 } ) ;
317318
318319 fromEvent ( this . el , 'mouseleave' )
319320 . pipe ( takeUntil ( this . destroy$ ) )
320321 . subscribe ( ( ) => {
321- this . nzResizableService . mouseEntered $. next ( false ) ;
322+ this . nzResizableService . mouseEnteredOutsideAngular $. next ( false ) ;
322323 } ) ;
323324 } ) ;
324325 }
325326
326327 ngOnDestroy ( ) : void {
327328 this . ghostElement = null ;
328329 this . sizeCache = null ;
329- this . destroy$ . next ( ) ;
330- this . destroy$ . complete ( ) ;
331330 }
332331}
0 commit comments