Я пытаюсь перенаправить пользователя после успешного входа. Вот код:Угловая 2 не перенаправляется после входа в систему
login(event) {
event.preventDefault();
this.error = '';
this.loading = true;
this.authenticationService.login(this.user.email, this.user.password)
.subscribe(result => {
if (!result) {
this.loginError();
return;
}
this.loginSuccess();
},
err => {
this.loginError();
});
}
Метод authenticationService.login() делает HTTP POST. Метод loginSuccess() это одна:
private loginSuccess() {
this.router.navigate(['/app/dashboard']);
}
Кажется, эта проблема что-то связано с асинхронными методами один раз, если я пытаюсь войти снова перенаправляет. Но, насколько я могу судить, router.navigate вызывается только после возвращения запроса.
Я заметил, что router.navigate() возвращает объект ZoneAwarePromisse. Если он успешно перенаправляет объект выглядит следующим образом:
__zone_symbol__state:true
__zone_symbol__value:true
Однако отказавший один выглядит следующим образом:
__zone_symbol__state:true
__zone_symbol__value:false
(1) Пробовали ли вы просматривать ответы сервера на вкладке сетевого трафика в dev-среде вашего браузера? (2) Были ли вы вставлены операторы console.log() для проверки a), что функция успеха вызывается каждый раз, b) что объект результата правильно настроен во всех экземплярах и c) что функция ошибки не выполняется? Я очень заинтересован помочь вам в решении этого вопроса, пожалуйста, сообщите мне об этом. –