2017-07-07 3 views
0

Ich brauche Wert von Post-Methode zurückgegeben. Ich habe versucht, Daten zuzuordnen, aber es (newTask) bleibt null. Ich weiß nicht, wie man das Aufgabenobjekt aus dieser Funktion herausholt. Irgendwelche Hilfe, bitte.Erhalten Wert von Post-Methode mit Observablen

public PostTask(task:Tasks){ 

     let headers=new Headers({'Content-Type':'application/json'}); 
     let options=new RequestOptions({headers:headers}); 


     this._http.post('http://localhost:58592/api/tasks',task,options) 
      .map(res => res.json() as Tasks) 
      .map(newTask=>this.newTask=newTask) 
      .catch(this.handleError).subscribe(); 


    } 
+0

Zweite Karte scheint unnötig. Sie können einfach '.map (res => this.newTask = res.json())'. Abgesehen davon, sind Sie sicher, dass Ihre API wie erwartet funktioniert? Siehst du deine JSON-Daten auf den Dev Tools/Netzwerk-Tabs? –

+0

@BunyaminCoskuner, ja. Ich sehe es nach der GettAllTasks() Methode. – pryanik

+0

Wie und wann versuchen Sie auf Ihre 'this.newTask' zuzugreifen? Beachten Sie, dass dies eine asynchrone Operation ist. Wenn Sie versuchen, direkt nach dem Aufrufen dieser Methode darauf zuzugreifen, ist der Wert null. –

Antwort

0

http.get() gibt ein Observable zurück. Um einen Wert aus einer Observablen zu extrahieren, sobald sie einmal emittiert wurde, sollten wir sie nach der Umwandlung emittierter Werte abonnieren.

this._http.post('http://localhost:58592/api/tasks',task,options) 
     .map(res => res.json() as Tasks) 
     .subscribe( 
       newTask => this.newTask = newTask , 
       error => console.log(error); 
     ); 

Bitte lesen Sie die angular.io Dokumentation und Beispiele.