Составная часть:
import { Component, OnInit } from '@angular/core';
// Services
import { AuthService } from './services/auth.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.less']
})
export class AppComponent implements OnInit {
user: Object;
authorized: boolean;
constructor(private authService: AuthService) {}
ngOnInit() {
this.authorized = this.authService.loggedIn();
}
}
HTML:
<app-navbar *ngIf = "authorized"></app-navbar>
<div id = "content"
*ngIf = "authorized">
<app-sidebar></app-sidebar>
<div class = "wrapper full-width">
<router-outlet></router-outlet>
</div>
</div>
<div class = "container mt-6"
*ngIf = "!authorized">
<router-outlet></router-outlet>
</div>
this.authService.loggedIn(); возвращает true или false, что используется для отображения некоторых элементов в * ngIf HTML. Пользователь перенаправляется на эту страницу после входа в систему, поэтому * ngIf не читаются автоматически. Вместо этого вам нужно обновить страницу, чтобы все обновилось правильно.
Насколько мне известно, я не могу подписаться на this.authService.loggedIn(), поскольку он не является наблюдаемым, поэтому я не уверен, как автоматически обновлять представление, когда пользователь впервые просматривает компонент. Вот сам сервис для справки:
loggedIn() {
if (localStorage.id_token === undefined ) {
return false;
} else {
const helper = new JwtHelperService();
return !helper.isTokenExpired(localStorage.id_token);
}
}





Вы можете убедиться, что свойство authorized обновлено, сделав его геттером:
public get authorized(): boolean {
return this.authService.loggedIn();
}
Этот код получает только текущее значение от службы. Я не знаю, что вызывает проблему с загрузкой. Вы можете проверить в консоли, есть ли сообщения об ошибках.
Вместо использования ngIf, чтобы скрыть выход маршрутизатора, вы можете рассмотреть возможность реализации охранник маршрута, чтобы разрешить навигацию только тогда, когда пользователь вошел в систему.
Кажется, это отлично работает, но нарушает загрузку других компонентов. Теперь, когда я пытаюсь перейти к другому маршруту, сам маршрут изменяет содержимое HTML или <router-outlet> не обновляется, пока я не обновлю страницу. Что могло быть причиной того, что содержимое маршрута, по которому щелкнули, не загружалось?