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?
zeigen, wo Sie sendTransaction anrufen – Sajeetharan
'kann nichts im Netzwerk Registerkarte sehen? – SaiUnique
@SaiUnique Chrom -> Entwickler-Tools -> Netzwerk – szpic