У меня такая ситуация:
- Пользователь нажимает на ссылку, например, из скайпа или что-то в этом роде.
- 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, поэтому я просто поместил его в тему и подписался там, где мне было нужно.