diff options
author | crupest <crupest@outlook.com> | 2019-03-13 22:04:09 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2019-03-13 22:04:09 +0800 |
commit | 29716c4681f0e016e5f25291e95a143ade39faee (patch) | |
tree | 862047f5836d4dd8be87f7fb93e16f3d7739d499 /Timeline/ClientApp/src/app/user/user.service.ts | |
parent | 435c2b4e68c06bc2d03b209a3dba0b8918f3bf8c (diff) | |
download | timeline-29716c4681f0e016e5f25291e95a143ade39faee.tar.gz timeline-29716c4681f0e016e5f25291e95a143ade39faee.tar.bz2 timeline-29716c4681f0e016e5f25291e95a143ade39faee.zip |
Use route to control user dialog.
Diffstat (limited to 'Timeline/ClientApp/src/app/user/user.service.ts')
-rw-r--r-- | Timeline/ClientApp/src/app/user/user.service.ts | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/Timeline/ClientApp/src/app/user/user.service.ts b/Timeline/ClientApp/src/app/user/user.service.ts index e876706c..076d0c21 100644 --- a/Timeline/ClientApp/src/app/user/user.service.ts +++ b/Timeline/ClientApp/src/app/user/user.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@angular/core'; -import { MatDialog } from '@angular/material'; +import { MatDialog, MatDialogRef } from '@angular/material'; +import { Router, ActivationStart } from '@angular/router'; import { Observable } from 'rxjs'; @@ -15,7 +16,16 @@ import { UserDialogComponent } from './user-dialog/user-dialog.component'; providedIn: 'root' }) export class UserService { - constructor(private dialog: MatDialog, private internalService: InternalUserService) { } + + private dialogRef: MatDialogRef<UserDialogComponent> | null = null; + + constructor(router: Router, private dialog: MatDialog, private internalService: InternalUserService) { + router.events.subscribe(event => { + if (event instanceof ActivationStart && event.snapshot.outlet === 'user') { + setTimeout(() => this.openUserDialog(), 0); + } + }); + } get currentUserInfo(): UserInfo | null { return this.internalService.currentUserInfo; @@ -25,9 +35,19 @@ export class UserService { return this.internalService.userInfo$; } - openUserDialog() { - this.dialog.open(UserDialogComponent, { + private openUserDialog() { + if (this.dialogRef) { + return; + } + + this.dialogRef = this.dialog.open(UserDialogComponent, { width: '300px' }); + + const subscription = this.dialogRef.afterClosed().subscribe(_ => { + this.internalService.userRouteNavigate(null); + this.dialogRef = null; + subscription.unsubscribe(); + }); } } |