Имеется простой модуль к доступу к компоненту через AuthGuard
const routes = [
{ path: '', component: TasklistComponent, canActivate: [AuthGuard], },
{ path: 'register', component: RegistrationComponent },
{ path: 'login', component: LoginComponent },
А так же проверка на авторизацию при запуске приложения
{ provide: APP_INITIALIZER,
useFactory: asset,//(_auth: AuthService) => () => _auth.login(),
deps:[AuthService],
multi: true }
export function asset(_auth: AuthService) {
return () => _auth.login()
}
Есть компонент логина, внутри которого я делаю переход после успешной авторизации к роуту "" - то есть запускается GUARD
this._user.authUser(this.loginForm.value.username,this.loginForm.value.password)
.subscribe(msg => {
if (msg.token) {
this._auth.updateStatus(true);
//this._auth.isLoggedIn = true;
this.router.navigate(['']);
}
Проблема в том что внутри сервиса AuthService данные меняются, а Guard этих изменений не видит
isLoggedIn: Subject<boolean> = new Subject<boolean>();
statusStream$ = this.isLoggedIn.asObservable();
updateStatus(stat:boolean) {
console.log('update');
this.isLoggedIn.next(stat);
}
Я уже пытался и через подписки, внутри компонента логина изменений отслеживаются, внутри Guard - нет Код Guard
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
this._subscription = this._auth.statusStream$.subscribe( value => {
this.status = value;
});
let url: string = state.url;
return this.checkLogin(url);
}
checkLogin(url: string): boolean {
if (this.status) {
return true;
}
this._auth.redirectUrl = url;
this.router.navigate(['/login']);
return false;
}
Я подозреваю что проблема в том, что Guard инициализируется раньше сервиса (но по идее в этом же не должно быть проблем) Помимо подписок пробовал меня и возвращать просто параметры сервиса - не помогает((((
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники