9
9
OnDestroy ,
10
10
Output
11
11
} from '@angular/core' ;
12
- import { Subscription } from 'rxjs' ;
13
12
import { PopoverBackdrop , PopoverPositionType , PopoverRelativePositionLocation } from './popover' ;
14
13
import { PopoverContentComponent } from './popover-content.component' ;
15
14
import { PopoverRef } from './popover-ref' ;
@@ -51,12 +50,14 @@ export class PopoverComponent implements OnDestroy {
51
50
@ContentChild ( PopoverContentComponent , { static : true } )
52
51
public content ! : PopoverContentComponent ;
53
52
54
- private subscription ?: Subscription ;
53
+ private popover ?: PopoverRef ;
55
54
56
55
public constructor ( private readonly popoverService : PopoverService , private readonly popoverElement : ElementRef ) { }
57
56
58
57
public ngOnDestroy ( ) : void {
59
- this . subscription ?. unsubscribe ( ) ;
58
+ if ( ! this . popover ?. closed ) {
59
+ this . popover ?. close ( ) ;
60
+ }
60
61
}
61
62
62
63
@HostListener ( 'click' )
@@ -65,7 +66,7 @@ export class PopoverComponent implements OnDestroy {
65
66
return ;
66
67
}
67
68
68
- const popover = this . popoverService . drawPopover ( {
69
+ this . popover = this . popoverService . drawPopover ( {
69
70
position : {
70
71
type : PopoverPositionType . Relative ,
71
72
origin : this . popoverElement ,
@@ -76,17 +77,17 @@ export class PopoverComponent implements OnDestroy {
76
77
} ) ;
77
78
78
79
// Closing can happen internal to the Popover for things like closeOnBackdropClick. Let the consumer know.
79
- this . subscription = popover . closed$ . subscribe ( ( ) => this . popoverClose . emit ( ) ) ;
80
+ this . popover . closed$ . subscribe ( ( ) => this . popoverClose . emit ( ) ) ;
80
81
81
- popover . closeOnBackdropClick ( ) ;
82
+ this . popover . closeOnBackdropClick ( ) ;
82
83
83
84
if ( this . closeOnClick ) {
84
- popover . closeOnPopoverContentClick ( ) ;
85
+ this . popover . closeOnPopoverContentClick ( ) ;
85
86
}
86
87
if ( this . closeOnNavigate ) {
87
- popover . closeOnNavigation ( ) ;
88
+ this . popover . closeOnNavigation ( ) ;
88
89
}
89
90
90
- this . popoverOpen . emit ( popover ) ;
91
+ this . popoverOpen . emit ( this . popover ) ;
91
92
}
92
93
}
0 commit comments