34 changed files with 343 additions and 99 deletions
@ -0,0 +1,51 @@ |
|||
///
|
|||
/// Copyright © 2016-2019 The Thingsboard Authors
|
|||
///
|
|||
/// Licensed under the Apache License, Version 2.0 (the "License");
|
|||
/// you may not use this file except in compliance with the License.
|
|||
/// You may obtain a copy of the License at
|
|||
///
|
|||
/// http://www.apache.org/licenses/LICENSE-2.0
|
|||
///
|
|||
/// Unless required by applicable law or agreed to in writing, software
|
|||
/// distributed under the License is distributed on an "AS IS" BASIS,
|
|||
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
/// See the License for the specific language governing permissions and
|
|||
/// limitations under the License.
|
|||
///
|
|||
|
|||
import { OnDestroy } from '@angular/core'; |
|||
import { PageComponent } from './page.component'; |
|||
import { Store } from '@ngrx/store'; |
|||
import { AppState } from '@core/core.state'; |
|||
import { MatDialogRef } from '@angular/material/dialog'; |
|||
import { NavigationStart, Router, RouterEvent } from '@angular/router'; |
|||
import { Subscription } from 'rxjs'; |
|||
import { filter } from 'rxjs/operators'; |
|||
|
|||
export abstract class DialogComponent<T, R = any> extends PageComponent implements OnDestroy { |
|||
|
|||
routerSubscription: Subscription; |
|||
|
|||
protected constructor(protected store: Store<AppState>, |
|||
protected router: Router, |
|||
protected dialogRef: MatDialogRef<T, R>) { |
|||
super(store); |
|||
this.routerSubscription = this.router.events |
|||
.pipe( |
|||
filter((event: RouterEvent) => event instanceof NavigationStart), |
|||
filter(() => !!this.dialogRef) |
|||
) |
|||
.subscribe(() => { |
|||
this.dialogRef.close(); |
|||
}); |
|||
} |
|||
|
|||
ngOnDestroy(): void { |
|||
console.log('Dialog destroy called'); |
|||
super.ngOnDestroy(); |
|||
if (this.routerSubscription) { |
|||
this.routerSubscription.unsubscribe(); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue