2017-04-09 2 views
0

Ich melde die Router Ereignisse in meiner Top-navbar Komponente aufzuhängen:Navigieren Sie zu einer anderen Route innerhalb router.events Funktion bewirkt, dass Browser

this.router.events.subscribe(event => { 
    if (event instanceof RoutesRecognized && this.authService.isLoggedIn()) { 

     // some other custom if-logic then do this: 
     this.router.navigate(['404']); 
    } 
}); 

Wenn ich den obigen Code meines Browser ausführen friert und ich muß kill the chrome.exe im Taskmanager ...

Warum kann ich nicht zu einer anderen neuen Route navigieren, während die alte Route noch navigiert?

Wie kann ich das tun?

Antwort

0

Sie befinden sich unter Redirect Loop Mate. Sie rufen die Router-Navigationsmethode innerhalb des Ereignisblocks ohne eine bestimmte URL in Ihrer Bedingung auf.

Derzeit wird Ihr Code immer dann ausgeführt, wenn die URL aktualisiert wurde, so dass sie nach jeder Weiterleitung immer wieder ausgeführt wird.

diese zu lösen versucht die Strecke auch mit Bedingung hinzuzufügen, so dass es nicht für jede URL ausführen wird es etwas sein wird wie

this.router.events.subscribe(event => { 
    let url = this.router.url; 
    if (event instanceof RoutesRecognized && this.authService.isLoggedIn() && url !== "/404") { 

    // some other custom if-logic then do this: 
    this.router.navigate(['404']); 
    } 
    }); 

url Logik Ersetzen mit Ihrem eigenen, aber Sie haben Ihren Code zu beschränken um auf bestimmten Seiten auszuführen, anstatt alle im oberen Beispiel, wird es nicht auf 404-Route ausgeführt.

+0

Danke Ihr Hinweis ist wahr. Ich werde diesen Fehler nicht beheben. Dieses Problem einiger anderer Probleme ist nur auf eine Anforderung zurückzuführen, die ich mir gestellt habe, aber ich habe mich entschieden, meine Init-Ui drastisch zu ändern, so dass solche Workarounds nicht mehr benötigt werden :-) – Pascal

Verwandte Themen