99 OnDestroy ,
1010 Output
1111} from '@angular/core' ;
12- import { Subscription } from 'rxjs' ;
1312import { PopoverBackdrop , PopoverPositionType , PopoverRelativePositionLocation } from './popover' ;
1413import { PopoverContentComponent } from './popover-content.component' ;
1514import { PopoverRef } from './popover-ref' ;
@@ -51,12 +50,14 @@ export class PopoverComponent implements OnDestroy {
5150 @ContentChild ( PopoverContentComponent , { static : true } )
5251 public content ! : PopoverContentComponent ;
5352
54- private subscription ?: Subscription ;
53+ private popover ?: PopoverRef ;
5554
5655 public constructor ( private readonly popoverService : PopoverService , private readonly popoverElement : ElementRef ) { }
5756
5857 public ngOnDestroy ( ) : void {
59- this . subscription ?. unsubscribe ( ) ;
58+ if ( ! this . popover ?. closed ) {
59+ this . popover ?. close ( ) ;
60+ }
6061 }
6162
6263 @HostListener ( 'click' )
@@ -65,7 +66,7 @@ export class PopoverComponent implements OnDestroy {
6566 return ;
6667 }
6768
68- const popover = this . popoverService . drawPopover ( {
69+ this . popover = this . popoverService . drawPopover ( {
6970 position : {
7071 type : PopoverPositionType . Relative ,
7172 origin : this . popoverElement ,
@@ -76,17 +77,17 @@ export class PopoverComponent implements OnDestroy {
7677 } ) ;
7778
7879 // 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 ( ) ) ;
8081
81- popover . closeOnBackdropClick ( ) ;
82+ this . popover . closeOnBackdropClick ( ) ;
8283
8384 if ( this . closeOnClick ) {
84- popover . closeOnPopoverContentClick ( ) ;
85+ this . popover . closeOnPopoverContentClick ( ) ;
8586 }
8687 if ( this . closeOnNavigate ) {
87- popover . closeOnNavigation ( ) ;
88+ this . popover . closeOnNavigation ( ) ;
8889 }
8990
90- this . popoverOpen . emit ( popover ) ;
91+ this . popoverOpen . emit ( this . popover ) ;
9192 }
9293}
0 commit comments