33 Inject ,
44 InjectionToken ,
55 OnInit ,
6+ OnDestroy ,
67 AfterContentInit ,
78 ChangeDetectionStrategy ,
89 ViewChild
@@ -18,8 +19,9 @@ import { Router, ActivatedRoute } from '@angular/router';
1819import { BreakpointObserver } from '@angular/cdk/layout' ;
1920import { MatSidenav } from '@angular/material' ;
2021import { Subscription } from 'rxjs/Subscription' ;
22+ import { Subject } from 'rxjs/Subject' ;
2123import { Observable } from 'rxjs/Observable' ;
22- import { filter } from 'rxjs/operators' ;
24+ import { filter , takeUntil } from 'rxjs/operators' ;
2325import { OperatorDoc } from '../../operator-docs/operator.model' ;
2426import { OperatorMenuService } from '../core/services/operator-menu.service' ;
2527
@@ -58,10 +60,11 @@ interface OperatorDocMap {
5860 ] )
5961 ]
6062} )
61- export class OperatorsComponent implements OnInit , AfterContentInit {
63+ export class OperatorsComponent implements OnInit , AfterContentInit , OnDestroy {
6264 @ViewChild ( MatSidenav ) _sidenav : MatSidenav ;
6365 public groupedOperators : OperatorDocMap ;
6466 public categories : string [ ] ;
67+ private _onDestroy = new Subject ( ) ;
6568
6669 constructor (
6770 private _breakpointObserver : BreakpointObserver ,
@@ -77,7 +80,7 @@ export class OperatorsComponent implements OnInit, AfterContentInit {
7780 ngAfterContentInit ( ) {
7881 this . _operatorMenuService
7982 . menuStatus ( )
80- . pipe ( filter ( s => ! ! s ) )
83+ . pipe ( filter ( s => ! ! s ) , takeUntil ( this . _onDestroy ) )
8184 . subscribe ( _ => this . _sidenav . open ( ) ) ;
8285 }
8386
@@ -98,6 +101,10 @@ export class OperatorsComponent implements OnInit, AfterContentInit {
98101 get sidenavMode ( ) {
99102 return this . smallScreen ? 'over' : 'side' ;
100103 }
104+
105+ ngOnDestroy ( ) {
106+ this . _onDestroy . next ( ) ;
107+ }
101108}
102109
103110export function groupOperatorsByType ( operators : OperatorDoc [ ] ) : OperatorDocMap {
0 commit comments