Итак, у меня есть этот охранник, чтобы наблюдать за моими защищенными маршрутами в моем приложении. В принципе, мое сеансовое обслуживание извлекает свои учетные данные из localStorage внутри NgOnInit, а затем охранник должен спросить службу, если он имеет полномочие так он будет знать, если он должен одобрить этот маршрутУгловая 2 - запустите сеансовое обслуживание до того, как кары в
import { Injectable } from '@angular/core';
import { Router, CanActivate } from '@angular/router';
import { SessionService } from './../session/session.service'
@Injectable()
export class AuthGuard implements CanActivate {
constructor(
private router: Router,
private sessionService: SessionService
) { }
canActivate() {
//without this line this won't work
//this.sessionService.loadUser();
if (this.sessionService.isValidSession()) {
// logged in so return true
return true;
}
// not logged in so redirect to login page
this.router.navigate(['/login']);
return false;
}
}
это мой сеанс обслуживание:
export class SessionService implements OnInit {
.
.
.
constructor(
private authService: AuthenticationService,
) {
this.timeout = null;
}
ngOnInit() {
this.loadUser();
}
Теперь проблема заключается в том, что ngOnInit на моей службе сеанса не будет вызвана автоматически Я должен указать y вызов loadUser() внутри охранника, который не является тем, что я хочу сделать
Любая идея, как заставить ngOnInit сеансовой службы выполнить выполнение до того, как canActive охранника?
Большое спасибо !!!