Как включить диалог угловых материалов в Authguard в angular6 - PullRequest
0 голосов
/ 08 апреля 2019

Я должен ограничить вход в систему, когда пользователь нажимает кнопку, чтобы открывать угловые материалы в нескольких диалоговых окнах, и я не знаю, как это сделать с помощью Angular authguard.

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Если диалоговое окно является отдельным компонентом,

    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;

            }
}
0 голосов
/ 08 апреля 2019

Охранники могут использовать наблюдаемые, поэтому вам достаточно вернуть наблюдаемую, которая открывает диалог и затем передает 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
        });
}
...