如何在angular6的Authguard中包括角材料对话框

时间:2019-04-08 04:52:21

标签: angular dialog angular-material angular6

当用户单击按钮以打开多个角度材料对话框时,我必须限制登录,而且我不知道如何使用Angular authguard进行操作。

2 个答案:

答案 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)

后卫可以利用可观察对象,因此它足以让您返回可观察对象,这会打开一个对话框,然后传递truefalse

例如,我在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
        });
}