在canActivate守卫中使用Dialog之前,必须调用open方法显示Dialog。示例代码如下:
import { Injectable } from '@angular/core';
import { CanActivate } from '@angular/router';
import { MatDialog } from '@angular/material/dialog';
import { LoginDialogComponent } from './login-dialog.component';
@Injectable()
export class AuthGuard implements CanActivate {
constructor(public dialog: MatDialog) {}
canActivate() {
if (/* 用户未登录 */) {
const dialogRef = this.dialog.open(LoginDialogComponent, {
width: '250px',
});
return false;
}
return true;
}
}
在上面的示例中,如果用户未登录,将显示一个名为LoginDialogComponent的Dialog。在调用Dialog的open方法之前,不应该在canActivate守卫中使用Dialog。