2017-02-14 2 views
2

Ich kann Ausnahmen abfangen, wenn Sie die .subscribe() -Methode mit catch() verwenden, aber dies geschieht auf Serviceanrufbasis. Gibt es eine Möglichkeit, eine Ausnahme zu erfassen, die irgendwo auf der Seite auftritt und in der Ansicht angezeigt wird?Angular2 - Abfangen von Ausnahmen und Anzeigen von Fehlermeldungen in Ansicht

Es ist einfach, die Ausnahmen zu erfassen und sie in der Konsole anzuzeigen, aber ich muss etwas in der Ansicht anzeigen, um eine hilfreiche Fehlermeldung anstelle von nur einzufrieren geben.

Dank

+0

Sie können [window.onerror] (https: //developer.mozilla. org/de-DE/docs/Web/API/GlobalEventHandlers/onerror) um auf alle Ausnahmen auf der Seite zu reagieren, aber ich bin mir nicht sicher, ob das eine gute Idee ist ... – AngularChef

Antwort

2

Sie können die globale Fehlerbehandlung in Ihrem Modul außer Kraft setzen:

https://angular.io/docs/ts/latest/api/core/index/ErrorHandler-class.html

import { NgModule, ErrorHandler } from '@angular/core'; 

class MyErrorHandler implements ErrorHandler { 
    handleError(error) { 
    // do something with the exception 
    } 
} 
@NgModule({ 
    providers: [{ provide: ErrorHandler, useClass: MyErrorHandler }] 
}) 
class MyModule {} 

Für eine benutzerdefinierten Fehlerdialog oder Fehlermeldung, ich eine benutzerdefinierte ErrorLogService schaffen würde, was erlaubt Komponenten zum Abonnieren eines Fehlerereignisses. Die Komponente, die den Fehler anzeigt, würde das Fehlerereignis abonnieren und eine Fehlermeldung anzeigen oder ein Fehlerdialogfenster anzeigen.

Sehen Sie diese Antwort für wie Flux zu verwenden, um dies zu tun (das Muster ist wichtig - nicht die spezifischen Klassen beteiligt): How can I maintain the state of dialog box with progress all over my Angular 2 application?

Verwandte Themen