2017-07-10 1 views
0

Hallo Ich habe Service für Daten auf meinen Server zu senden:Gesuch nicht gesendet beeing

import { Injectable} from '@angular/core'; 
import { Http, Response,Headers, RequestOptions } from '@angular/http'; 
import 'rxjs/add/operator/catch'; 
import 'rxjs/add/operator/map'; 
import { Observable } from 'rxjs/Observable'; 
import { Transaction } from './transaction' 

@Injectable() 
export class TransactionSenderService{ 
    constructor(private http:Http){} 
    private url = 'http://localhost:3000/transaction/save/'; 

sendTransaction(ta: Transaction) : Observable<Boolean>{ 
    let bodyString = JSON.stringify(ta); 
    let headers  = new Headers({ 'Content-Type': 'application/json' }); // ... Set content type to JSON 
    let options  = new RequestOptions({ headers: headers }); // Create a request option 
    return this.http.post(this.url,bodyString,options) 
    .map(this.extractData) 
    .catch(this.handleError); 
} 
private extractData(res: Response) { 
    let body = <Boolean>res.json(); 
    return body || {}; 
} 
private handleError(error: Response | any) { 
    // In a real world app, you might use a remote logging infrastructure 
    let errMsg: string; 
    if (error instanceof Response) { 
     const body = error.json() || ''; 
     const err = body.error || JSON.stringify(body); 
     errMsg = `${error.status} - ${error.statusText || ''} ${err}`; 
    } else { 
     errMsg = error.message ? error.message : error.toString(); 
    } 
    console.error(errMsg); 
    return Observable.throw(errMsg); 
} 

}

und in meinem express.js Teil:

app.post('/transaction/save/', (req, res)=>{ 
    var ta = req.body.ta; 
    res.send("done"); 
}) 

app.listen(3000, function() { 
    console.log('Example app listening on port 3000!') 
}); 

Problem ist mein Wunsch ist nicht gesendet werden? Ich kann nichts in der Netzwerkregisterkarte des Browsers sehen. Ich habe auch Haltepunkte in express.js, also sehe ich, dass nichts empfangen wird. Wenn ich es von Postman schickte, dann funktioniert es. Keine Ausnahmen/Fehler in der Konsole. Was mache ich falsch?

@UPDATE

ich gefragt wurde, hier zu setzen, wo ich diese Funktion send bin:

export class MainComponent implements OnChanges, OnInit, OnDestroy { 
    isModalVisible: Boolean; 
    transactions: Transaction[]; 
    selectedTa: number; 

    constructor(private transactionSenderService: TransactionSenderService) {} 


    ngOnInit() { 

    } 
    ngOnChanges(changes: SimpleChanges) { 
    alert("Wykrywam Zmiany"); 
    } 
    ngOnDestroy(){ 
     // prevent memory leak when component destroyed 
    this.subscription.unsubscribe(); 
    } 
    myValueChange(event: any) { 
    console.log(event); 
    } 
    clearTa(): void { 
    this.transactionSenderService.sendTransaction(this.transactions[this.selectedTa])  
    }  
} 

I unnötigen Code entfernt. Dieses Fragment funktioniert. Ich kann Schritt für Schritt sehen, dass ich in die Sendemethode gehe. Mehr wenn ich observable zu toPromise als Anfrage ändern wird gesendet. Warum?

+0

zeigen, wo Sie sendTransaction anrufen – Sajeetharan

+0

'kann nichts im Netzwerk Registerkarte sehen? – SaiUnique

+0

@SaiUnique Chrom -> Entwickler-Tools -> Netzwerk – szpic

Antwort

2

Sie müssen beobachtbar abonnieren, um die Anfrage zu stellen, ändern Sie den Ort, an dem Sie den Anruf tätigen.

this.transactionSenderService.sendTransaction(this.transactions[this.selectedTa]).subscribe(resp => { 

});