2017-08-09 3 views
0

Ich habe diese Methode:router.navigate() nicht funktioniert und nicht Fehler werfen

private redirect(path: string): void { 
    this.router.navigate([path]); 
    } 

, die in dieser heißt ein:

private onError(error: any): void { 
    switch (error.status) { 
     case 401: // Unauthorized. 
     this.redirect('auth/login'); 
     break; 
    } 

, das von dieser aufgerufen wird (dies ist die get von httpService)

public get(url: string, requestOptions: RequestOptionsArgs): Observable<any> { 
    this.requestInterceptor(); 
    return super.get(this.getFullUrl(url), this.requestOptions(requestOptions)) 
     .do((res: Response) => { 
     if (res.ok) { 
      this.onSuccess(res); 
     } 
     }, (error: any) => { 
     this.onError(error); 
     }) 
     .finally(() => { 
     this.onFinally(); 
     }); 
    } 

=> Navigieren funktioniert nicht, nichts passiert, kein Fehler wirft kein Protokoll. Ich habe versucht, vor und nach dem Anruf zu loggen. Ich bekomme das Protokoll vor, aber nicht nach ... Also gibt es ein Problem.

Ich benutze das gleiche navigieren an anderen Orten ohne Problem, aber hier sehe ich nicht, warum es nicht funktionieren würde.

Irgendeine Idee?

EDIT:

Dieser Dienst ist:

@Injectable() 
export class HttpService extends Http { 

    constructor(backend: ConnectionBackend, 
    defaultOptions: RequestOptions, 
    public router: Router, 
    public alertService: AlertService) { 
    super(backend, defaultOptions); 
    } 
    // Here the get() method 
} 

In der Mutter core.module gibt es eine Fabrik:

export function HttpFactory(backend: XHRBackend, 
          defaultOptions: RequestOptions, 
          router: Router, 
          alertService: AlertService): HttpService { 
    return new HttpService(backend, defaultOptions, router, alertService); 
} 
+0

Ihre Redirect-Methode wird nie verwendet – Faly

+0

Nicht so offensichtlich, habe ich die Frage bearbeitet. Ich habe mich im 'case 401' eingeloggt, aber es geht nie nach this.redirect(). Es hört einfach auf ohne Log oder irgendetwas –

+0

Post des Codes der gesamten Klasse/Komponente, die Sie haben und wie injizieren Sie 'Router'. – Denialos

Antwort

0

Das Problem war, dass ich die richtige hinzuzufügen vergessen Abhängigkeiten bei der Deklaration:

service, 
{ 
     provide: HttpService, 
     useFactory: HttpFactory, 
     deps: [XHRBackend, RequestOptions, Router], 
} 

Router fehlte

Verwandte Themen