Я новичок в angularjs (использую v5) и пытаюсь сделать маршрутизацию.Ну, маршрутизация работает нормально, но она загружает данные только когда мы нажимаем f5.
У меня есть страница входа.при нажатии кнопки входа в систему вызывается Api и возвращает токен для аутентичного пользователя.как показано ниже:
Компонент входа в систему
login()
{
this.authService.login(this.model).subscribe(m=>{
this.alertify.success('Logged in successfully');
localStorage.setItem('token', this.userToken);
}, error => {
this.alertify.error(error);
}, ()=>{
this.router.navigate(['/welcome'])
});
}
В этом методе, после того как токен успешно возвращен API, пользователь отправляется на страницу приветствия, и он отображает страницу приветствия, но без каких-либо данных об этом.пользователь.То есть он показывает пустую страницу. Это происходит потому, что «api» не вызывается всеми заголовками, которые включают в себя заголовок Authorization & berarer.
Но при выполнении f5 из браузера он передает заголовки в api и при успешном завершении возвращает данные.
и ниже - это приветственный компонент.
export class WelcomeComponent implements OnInit {
users: User[];
constructor(private userService: UserService, private alertify: AlertifyService) { }
ngOnInit() {
this.loadUsers();
}
loadUsers()
{
alert("Loading users");
this.userService.getUsers().subscribe(users => this.users = users)
, error => {
this.alertify.error(error);
};
}
}
и вызов loadUsersuserservice для вызова API.Вот пользовательский сервис:
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + localStorage.getItem('token')
})
};
@Injectable()
export class UserService {
baseUrl = environment.apiUrl;
constructor(private httpClient: HttpClient) { }
getUsers (): Observable<User[]> {
alert(httpOptions.headers);
return this.httpClient.get<User[]>(this.baseUrl + 'users', httpOptions).catch(this.handleError);
}
}
По моему мнению, переменная const может быть причиной проблемы, но я получил эту методологию от angularjs live Пример
Не могли бы выподскажите пожалуйста где я делаю не так?