Angular 2 - Überprüfung auf Serverfehler beim Abonnieren

10

Ich habe das Gefühl, dass dieses Szenario in den Angular 2 Docs sein sollte, aber ich kann es nirgends finden.

Hier ist das Szenario

  1. Senden Sie ein Formular (create object), das auf dem Server ungültig ist
  2. Server gibt eine 400 ungültige Anfrage mit Fehlern zurück, die ich auf dem Formular
  3. angezeigt habe
  4. nachdem die Subskription zurückkommt, möchte ich eine Fehlervariable oder etwas überprüfen (dh wenn keine Fehler & gt; dann zu neu erstellter Detailseite routen)

Ich stelle mir vor, dass es so etwas funktioniert:

%Vor%

Ich bin bei Angular 2 sehr neu, daher mag das an meinem mangelnden Verständnis dafür liegen, wie ein Observable funktioniert. Ich habe kein Problem mit der Anzeige dieser Daten auf dem Formular, aber ich kann nicht herausfinden, wie man es in der ts-Komponente sieht. Ich möchte wirklich nur den Erfolg / das Scheitern des http create überprüfen.

    
Stephanie 08.02.2017, 04:19
quelle

2 Antworten

27

Wie in der entsprechenden RxJS-Dokumentation angegeben, ist die .subscribe() method kann ein drittes Argument verwenden, das nach Abschluss aufgerufen wird, wenn keine Fehler auftreten.

Als Referenz:

  
  1. [onNext] ( Function ): Funktion, die für jedes Element in der beobachtbaren Sequenz aufgerufen wird.
  2.   
  3. [onError] ( Function ): Funktion, die bei einer außergewöhnlichen Beendigung der beobachtbaren Sequenz aufgerufen wird.
  4.   
  5. [onCompleted] ( Function ): Funktion, die bei ordnungsgemäßer Beendigung der beobachtbaren Sequenz aufgerufen wird.
  6.   

Daher können Sie Ihre Routing-Logik im onCompleted -Rückruf handhaben, da sie bei ordnungsgemäßer Beendigung aufgerufen wird (was bedeutet, dass beim Aufruf keine Fehler auftreten).

%Vor%

Als Randnotiz gibt es auch eine .finally() Methode , die bei Abschluss aufgerufen wird, unabhängig vom Erfolg / Fehlschlag des Aufrufs. Dies kann in Szenarien nützlich sein, in denen Sie immer eine bestimmte Logik nach einer HTTP-Anforderung unabhängig vom Ergebnis ausführen möchten (z. B. für Protokollierungszwecke oder für einige UI-Interaktionen, z. B. zum Anzeigen eines Modals).

  

Rx.Observable.prototype.finally(action)

     

Ruft eine angegebene Aktion auf, nachdem die beobachtbare Quellensequenz ordnungsgemäß oder ausnahmsweise beendet wurde.

Hier ist zum Beispiel ein einfaches Beispiel:

%Vor%     
Josh Crozier 08.02.2017, 04:38
quelle
1

Sie können mit folgendem Weg erreichen

%Vor%     
Pramod Patil 08.02.2017 04:39
quelle

Tags und Links