2016-10-25 6 views
0

Итак, у меня есть этот охранник, чтобы наблюдать за моими защищенными маршрутами в моем приложении. В принципе, мое сеансовое обслуживание извлекает свои учетные данные из 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 охранника?

Большое спасибо !!!

ответ

0

Не пользователь «OnInit» с услугами только с компонентами. Вместо этого вызовите требуемую логику загрузки в конструкторе службы

 Смежные вопросы

  • Нет связанных вопросов^_^