Я пытаюсь перенаправить пользователя на предыдущую дорогу после того, как он успешно вошел в систему.
Мой auth.guard.ts
const currentUser = this.authenticationService.currentUserValue;
if (currentUser) {
// logged in so return true
return true;
}
// not logged in so redirect to login page with the return url
this.router.navigate(['/login'], {queryParams: {returnUrl: state.url}});
return false;
устанавливает правильный returnUrl
Тогда мой login.component.ts
[...]
// get return url from route parameters or default to '/'
this.route.queryParams
.subscribe(params => {
this.returnUrl = params['redirectUrl'] || '/'
console.log(this.returnUrl)
console.log(params)
} );
[...]
this.authenticationService.login(this.f.email.value, this.f.password.value)
.pipe(first())
.subscribe(
data => {
//TODO: navigate returns false
this.router.navigate([this.returnUrl]).then(nav => {
console.log(nav); // true if navigation is successful
}, err => {
console.log(err) // when there's an error
});
},
error => {
this.spinner = false;
this.submitted = false;
this.invalid = true;
this.loading = false;
},
() => {
this.spinner = false;
this.submitted = false;
});
Здесь навигация возвращает false и больше ничего не делает. Я пытался увидеть, если this.returnUrl установлен правильно, и это действительно так. Так что я не знаю, что может вызвать проблему. Если я установлю this.router.navigate ['/ что-то'], то он будет работать нормально.