angular 5 - перенаправить предыдущую страницу после входа в систему - PullRequest
0 голосов
/ 04 июня 2018

Angular 5 перенаправляет на предыдущую страницу после входа в систему.

Когда я нажимаю URL-адрес вручную, если он не вошел, он будет перенаправлен на страницу входа, но после входа в систему, он должен перенаправить на URL, которыйвведен, но теперь я просто могу перенаправить на домашнюю страницу, используя это:

this.router.navigate(['/homepage']);

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Когда вы перенаправляете на страницу входа с защитой, вы можете поместить исходный URL в queryParams следующим образом:

canActivate(next: ActivatedRouteSnapshot,
            state: RouterStateSnapshot) {
    if (this.authService.isAuthenticated()) {
        return true;
    } else {
        console.log('Could not authenticate');
        this.router.navigate(['login'],{queryParams:{'redirectURL':state.url}});
        return false;
    }
}

После входа в систему вы можете получить исходный URL-адрес страницы изпараметры запроса:

let params = this.route.snapshot.queryParams;
    if (params['redirectURL']) {
        this.redirectURL = params['redirectURL'];
    }

...

if (this.redirectURL) {        
    this.router.navigateByUrl(this.redirectURL,)
        .catch(() => this.router.navigate(['homepage']))
} else {

    this.router.navigate(['homepage'])
}
0 голосов
/ 04 июня 2018

Вы можете отправить URL-адрес перед переходом на домашнюю страницу и использовать его там

@Component({ ... })
class SomePageComponent {
  constructor(private route: ActivatedRoute, private router: Router) {}
  checkLogin() {
    if (!this.auth.loggedIn()) {
      this.router.navigate(['/homepage`], { queryParams: { redirectTo: this.route.snapshot.url } });
    }
  }
}

Таким образом, в вашем компоненте входа в систему вы можете получить доступ к параметру queryParams, как этот

@Component({...})
class LoginComponent {
  constructor(private router: Router, private route: ActivatedRoute) {}

  backToPreviousPage() {
    this.router.navigate([this.route.snapshot.queryParam.get('redirectTo')]);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...