Как правильно заглянуть в историю роутера - PullRequest
0 голосов
/ 01 октября 2018

У меня такая ситуация:

  • Пользователь нажимает на ссылку, например, из скайпа или что-то в этом роде.
  • URL-адрес, к которому пользователь хочет получить доступ, требует, чтобы пользователь был зарегистрирован.
  • После входа в систему пользователь должен быть перенаправлен на ту ссылку, по которой он щелкнул вместо корня приложения.

Пока что это мой компонент входа в систему:

login() {
        this.loading = true;
        this.authenticationService.login(this.model.username, this.model.password)
        .takeWhile(() => this.isAlive)
            .subscribe(result => {
                if (result) {
                    this.router.navigate(['/']);
                } else {
                    this.error = 'Error.';
                    this.loading = false;
                }
            },
            err => {
                this.translation[err.description] ? this.error = this.translation[err.description] : this.error = this.error = err.description;
                this.loading = false;
            })
    }

Я понятия не имею, как это сделать, но я думаю, что я должен посмотреть на routerHistory в истинном утверждении if(result).

Как правильно это сделать?

Правка и решение

Я наконец-то решил эту проблему.

CanActivate

canActivate(route: ActivatedRouteSnapshot,
        state: RouterStateSnapshot) {
       console.log(state.url);
    }

state.url содержит предыдущий URL, поэтому я просто поместил его в тему и подписался там, где мне было нужно.

...