Вы можете создать сервис для доступа к значению this.loggedIn в AppComponent, а также в AuthGuard.Вместо объявления переменной this.loggedIn в AppComponent объявите ее в службе.
LoggedInService
import { Injectable } from '@angular/core';
@Injectable()
export class LoggedInService {
constructor(
private router:Router
) { }
private loggedIn;
setLoggedIn(data){
// Change Value of this.loggedIn to true or false according to your logic
}
getLoggedIn(){
return this.loggedIn;
}
}
App.component.ts
export class AppComponent implements OnInit {
constructor(private galleryService: GalleryService,
private loggedInService: LoggedInService
) {}
ngOnInit() {
this.logTog();
}
logTog(): void {
this.loggedInService.loggedIn = !this.loggedInService.loggedIn;
this.galleryService.auth(this.loggedInService.loggedIn);
}
}
Файл аутентификации остается тем же в соответствии с вашей логикой
// Тот же код
guard.ts
export class AuthGuard implements CanActivate, OnInit {
constructor(private galleryService: GalleryService,
private loggedInService: LoggedInService
) {}
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return this.galleryService.auth(this.loggedInService.loggedIn);
}
ngOnInit() {
}
}