2017-07-09 4 views
1

Es ist möglich, viele Beispiele zu finden, die zeigen, wie man mit Hilfe einer Schaltfläche oder eines routerLinks in eckigen Komponenten zwischen Komponenten navigiert. 2. Ich möchte zu einer bestimmten Komponente navigieren wenn ein Fehler auftritt, ohne Benutzeraktion. Wie folgt aus:Navigieren in Angular 2 ohne Klicken auf ein HTML-Element

class MyErrorHandler implements ErrorHandler { 
    handleError(error) { 
     this.router.navigate(['/pagenotfound']); 
    } 
} 

Aber es ist nicht möglich, ein Router Objekt in MyErrorHandler Konstruktor zu initialisieren. Gibt es eine Möglichkeit, dieses Problem zu umgehen und ein automatisches Navigationssystem zu erstellen?

+0

Wenn Sie mehr daran interessiert sind, über das Routing in Eckige zu lernen, habe ich einen Kurs hier: https://app.pluralsight.com/library/Kurse/Winkel-Routing Sie können sich für eine freie Woche anmelden, um den Kurs zu sehen. – DeborahK

Antwort

3

Wenn Sie den Service Router in Ihrer Fehlerbehandlerklasse verwenden möchten, müssen Sie ihn injizieren. Sie können dies tun, indem Sie Ihren Service unter Verwendung des Dekorators @Injectable registrieren. Siehe das Beispiel unten.

@Injectable() 
export class MyErrorHandler { 
    constructor(private router: Router) { 

    } 

    handleError(error) { 
     this.router.navigate(['/pagenotfound']); 
    } 
} 

Danach tun Sie können Ihre MyErrorHandler Service in Ihrer Komponente oder jedem anderen Ort injizieren Sie es verwenden möchten.

Weitere Informationen über Dependency Injection (DI) finden Sie unter: https://angular.io/guide/dependency-injection

+0

Das half mir das Problem zu lösen, aber ich musste zuerst den injizierbaren Dienst injizieren und den Router via injizierbar bekommen. Vielen Dank –

Verwandte Themen