@@ -134,15 +134,6 @@ export class Dropdown implements OnInit,AfterViewInit,AfterViewChecked,DoCheck,O
134
134
ngOnInit ( ) {
135
135
this . optionsToDisplay = this . options ;
136
136
this . updateSelectedOption ( null ) ;
137
-
138
- this . documentClickListener = this . renderer . listenGlobal ( 'body' , 'click' , ( ) => {
139
- if ( ! this . selfClick && ! this . itemClick ) {
140
- this . panelVisible = false ;
141
- }
142
-
143
- this . selfClick = false ;
144
- this . itemClick = false ;
145
- } ) ;
146
137
}
147
138
148
139
ngDoCheck ( ) {
@@ -290,11 +281,14 @@ export class Dropdown implements OnInit,AfterViewInit,AfterViewChecked,DoCheck,O
290
281
this . domHandler . relativePosition ( panel , container ) ;
291
282
292
283
this . domHandler . fadeIn ( panel , 250 ) ;
284
+
285
+ this . bindDocumentClickListener ( ) ;
293
286
}
294
287
}
295
288
296
289
hide ( ) {
297
290
this . panelVisible = false ;
291
+ this . unbindDocumentClickListener ( ) ;
298
292
}
299
293
300
294
onInputFocus ( event ) {
@@ -416,12 +410,29 @@ export class Dropdown implements OnInit,AfterViewInit,AfterViewChecked,DoCheck,O
416
410
this . domHandler . findSingle ( this . el . nativeElement , 'input[readonly]' ) . focus ( ) ;
417
411
}
418
412
419
- ngOnDestroy ( ) {
420
- this . initialized = false ;
421
-
413
+ bindDocumentClickListener ( ) {
414
+ if ( ! this . documentClickListener ) {
415
+ this . documentClickListener = this . renderer . listenGlobal ( 'body' , 'click' , ( ) => {
416
+ if ( ! this . selfClick && ! this . itemClick ) {
417
+ this . panelVisible = false ;
418
+ }
419
+
420
+ this . selfClick = false ;
421
+ this . itemClick = false ;
422
+ } ) ;
423
+ }
424
+ }
425
+
426
+ unbindDocumentClickListener ( ) {
422
427
if ( this . documentClickListener ) {
423
428
this . documentClickListener ( ) ;
424
429
}
430
+ }
431
+
432
+ ngOnDestroy ( ) {
433
+ this . initialized = false ;
434
+
435
+ unbindDocumentClickListener ( ) ;
425
436
426
437
if ( this . appendTo ) {
427
438
this . el . nativeElement . appendChild ( this . panel ) ;
0 commit comments