Ich habe bereits so ein beobachtbares Muster eingerichtet und es funktioniert normalerweise, aber wie ich es in einem benutzerdefinierten Error-Handler verwendet, funktioniert es nicht.angular2 - beobachtbar nicht streaming?
Anscheinend wird der Code im Konstruktor nie ausgeführt, aber es ist eine reguläre Klasse, ich kann onInit nicht verwenden, kann ich nicht?
edit: Ich habe versucht, den Code in eine init-Funktion zu setzen, die von der Dialogkomponente vor dem subscribe aufgerufen wird, aber wenn ein Fehler auftritt, wird handleError aufgerufen, es scheint der Kontext geändert zu haben und nichts ist definiert (beobachtbar und beobachtbar) ist nicht definiert)
benutzerdefinierte Fehlerbehandlung:
export class CustomErrorHandler implements ErrorHandler
{
public errors : Observable<Error>;
private errorsObserver : Observer<Error>;
constructor() {
this.errors = Observable.create((observer :Observer<Error>)=> <<<<<<THIS ONE NEVER GETS EXECUTED
{
this.errorsObserver = observer;
}).share();
}
handleError(error:Error) {
this.errorsObserver.next(error);
}
}
@NgModule({
providers: [{provide: ErrorHandler, useClass: CustomErrorHandler}]
})
export class CustomErrorHandlerModule {}
die Dialogkomponente:
@Component({
moduleId: module.id,
selector: 'dialog',
templateUrl: './dialog.component.html',
})
export class Dialog implements OnInit
{
private ErrorMsg: string;
public ErrorMessageIsVisible: boolean;
errorsSub:Subscription ;
constructor(private customErrorHandler: CustomErrorHandler) {
}
ngOnInit()
{
this.errorsSub = this.customErrorHandler.errors.subscribe(
(error) => {
this.showErrorMessage(error.message);
});
}
showErrorMessage(msg: string)
{
this.ErrorMsg = msg;
this.ErrorMessageIsVisible = true;
}
hideErrorMsg()
{
this.ErrorMessageIsVisible = false;
}
}
es funktioniert (die beobachtbaren Trigger), aber mein Dialog angezeigt nicht bekommen. ..in anderen Fällen funktioniert der Dialog. Wenn also eine Ausnahme ausgelöst wird, wird der Fluss irgendwie unterbrochen, oder vielleicht, weil der Fehler in einem Service passiert? –