2017-02-23 4 views
0

Ich arbeite mit angular2. Jetzt habe ich Probleme, einen Wert innerhalb von subscribe() zu erhalten. Ich weiß, dass es Null zurückgibt. Wie kann ich den korrekten Wert zurückgeben?Wie bekomme ich Variablen innerhalb einer RxJS subscribe() Funktion?

Hier ist mein Code. Jeder gibt mir einen Rat, es wäre sehr hilfreich. Danke :)

this.deliveryService.deliveryCancel(rowInfo.branchId, rowInfo.id).subscribe(
 
       res => { 
 
       var data = res.json(); 
 
       this.getDeliveryList(); 
 
       this.msgs.push({ severity: 'success', summary: 'Info', detail: rowInfo.deliveryStatus }); 
 
       }, 
 
       err => { 
 
       this.errMessage = <any>err; 
 
       this.msgs.push({ severity: 'error', summary: 'Error', detail: this.errMessage }); 
 
       } 
 
      ); 
 
      
 
      console.log(data);

deliveryCancel()

deliveryCancel(branchId, deliveryId) { 
 
    const headers = new Headers({ 
 
     'Content-Type': 'application/json' 
 
    }); 
 
    return this.http.put(this.testUrl + '/admin/branches/' + branchId + '/deliveries/' + deliveryId + '/cancel', { 
 
     headers: headers 
 
    }) 
 
     .catch(handleError); 
 
    }

+0

können Sie Ihre Frage klären und in Beziehung auf den Code, den Sie geschrieben? – shusson

+0

Wo ist RXJS und wo ist die Subscribe-Methode in Ihrer Frage? –

+0

@shusson, ich bearbeite nur meinen Code. Mein schlechtes :( –

Antwort

0

Sie können nicht darauf zugreifen res.json() ähnlich. Und initialisiere "Daten" als Klassenvariable. Versuche dies.

+0

Was denken Sie, das Ergebnis von 'console.log (Daten)' wird sein? – echonax

+0

@ Raj m, Danke für Ihre Antwort, Es druckt immer noch Null –

+0

Konsole 'Res' und lassen Sie mich wissen –

0

Dies ist keine eckige Frage, sondern eher eine Javascript-Frage über asynchrones Verhalten, das den Ablauf der Ausführung unterbricht.

Das bedeutet, dass bei jedem Fehler oder Erfolg, der von deliveryCancel() zurückgegeben wird, die Funktion res oder err aufgerufen wird.

Ihre console.log (Daten) wird nur einmal ausgeführt und nie Teil dieser Funktionen.

Dies ist, was Sie nach:

this.deliveryService.deliveryCancel(rowInfo.branchId, rowInfo.id).subscribe(
     res => { 
     this.data = res['_body']; 
     this.getDeliveryList(); 
     this.msgs.push({ severity: 'success', summary: 'Info', detail: rowInfo.deliveryStatus }); 
console.log(data); 
     }, 
     err => { 
     this.errMessage = <any>err; 
     this.msgs.push({ severity: 'error', summary: 'Error', detail: this.errMessage }); 
console.log(data); 
     } 
    ); 
+0

Sie müssen auch deliveryCancel anrufen. – Arinaud

+0

Ich abonniert Observables in ngAfterViewInit – Arinaud

+0

Vielen Dank für die Antwort! Allerdings ist es nicht das, was ich wissen möchte. Ich wollte wissen, wie man 'Daten' außerhalb subscribe() verwendet –

Verwandte Themen