Я в своем уме пытаюсь понять, что я сделал неправильно в своем приложении Angular 6. Проблема с приведенным ниже кодом состоит в том, что он «должен» работать, но мое угловое приложение просто останавливается и не будет продолжаться.
Обратите внимание, что все мои другие вызовы API и подобный код работают нормально.
Я добавил в журналы консоли, чтобы попытаться выяснить, что происходит:
У меня есть форма, которую я отправляю:
submit(f) {
console.log('2')
// Now I'm saving the data, this works
this.userService.completeProfile(this.model)
.pipe(first())
.subscribe(
data => {
console.log('3')
// this is to get a new token
this.authService.getNewToken(this.model.id)
.pipe(first())
.subscribe(() =>
data => {
// I never get to 8
console.log('8')
this.router.navigateByUrl('/register/profile/complete');
},
error => {
console.log('9')
}
);
},
error => {
console.log('10')
});
}
Это мой сервис авторизации:
private currentUserSubject = new BehaviorSubject<LoggedInUser>({} as LoggedInUser);
currentUser = this.currentUserSubject.asObservable();
setCurrentUser(): void {
if (localStorage.getItem("auth_token")) {
let jwtData = localStorage.getItem("auth_token").split('.')[1]
let decodedJwtJsonData = window.atob(jwtData)
let decodedJwtData = JSON.parse(decodedJwtJsonData)
this.currentUserSubject.next(
{
name: decodedJwtData.name,
id: decodedJwtData.id,
}
);
}
}
getNewToken(id: String) {
return this.http.post<any>(this.baseUrl + '/GetNewToken', { id: id })
.pipe(map(user => {
console.log(user)
if (user && user.auth_token) {
console.log("4")
//localStorage.setItem('auth_token', user.auth_token);
console.log("5")
//this.setCurrentUser();
console.log("6")
}
console.log("7")
return user;
}));
}
Выход консоли останавливается на 7