当用户单击按钮以打开多个角度材料对话框时,我必须限制登录,而且我不知道如何使用Angular authguard进行操作。
答案 0 :(得分:1)
如果对话框是单独的组件,
import {Injectable} from '@angular/core';
@Injectable()
export class AuthGuard implements CanActivate {
canActivate(route) {
// check if logged in here
if(notLoggedIn) {
this.router.navigate(['/update-password']);
return false;
}
return true
}
如果不是单独的组件,请执行此操作
// button to open dialog
openDialog() {
if(notLoggedIn) {
this.router.navigate(['/update-password']);
return false;
}
}
答案 1 :(得分:0)
后卫可以利用可观察对象,因此它足以让您返回可观察对象,这会打开一个对话框,然后传递true
或false
。
例如,我在canDeactivate
上的项目中如何使用它(无论哪种情况,警卫都遵循相同的原则)
canDeactivate(
component: Component,
currentRoute: ActivatedRouteSnapshot,
currentState: RouterStateSnapshot,
nextState?: RouterStateSnapshot
): Observable<boolean> | Promise<boolean> | boolean {
// Opens a modal and returns an observable
return this.ps.openModal({
confirmMessage: confirmMessage,
confirmHeader: confirmHeader,
modalColor: modalColor,
approve: approve,
cancel: cancel,
buttonsColor: buttonsColor
});
}