[英]Angular2 http.post response undefined
我面临着无法解决的问题。
我知道
不假设服务器API。 并非所有服务器都返回带有数据属性的对象。
但我根本不知道如何处理。 我应该如何将数据发送到:
data => this.exercises.push(data),
如果我的回答是空的? 结果,在页面上,我收到了新的li元素,该元素为空。 我需要怎么做才能查看新记录而无需重新加载页面?
一些代码:
exercises.component.ts
getExercises() {
this.exercisesService.getExercises()
.subscribe(
exercises => this.exercises = exercises,
error => this.errorMessage = error);
}
TestPost(){
let exerciseName = {
"name": "tetstse"
};
this.exercisesService.addExercise(exerciseName)
.subscribe(
data => this.exercises.push(data),
error => console.log(this.errorMessage),
() => console.log("Finished properly")
);
//this.getExercises();
}
exercises.service.ts
getExercises(): Observable<Exercises[]>{
return this._http.get(this.getExercisesUrl)
.map((res: Response) => res.json())
.catch(this.handleError);
}
addExercise(name): Observable<Exercises> {
let headers = new Headers();
headers.append('Content-Type', 'application/json');
let json = JSON.stringify(name);
return this._http.post(this.addExerciseUrl, json , headers)
.map(this.extractData)
.catch(this.handleError)
}
private handleError (error: Response | any) {
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);
}
private extractData(res: Response) {
let body = res.json();
return body.data || { } ;
}
您可以检查data
是否为空,如下所示:
TestPost() {
let exerciseName = {
"name": "tetstse"
};
let sub = this.exercisesService.addExercise(exerciseName)
.subscribe(data => {
console.log(data);
if (data != null) {
data => this.exercises.push(data) // We have something
}
else {
console.log('No data returned');
// Do something else letting the end user know of this.
}
},
err => {
console.log('we got an error:', err);
});
sub.unsubscribe():
}
我的问题的答案很简单。
private extractData(res: Response) {
let body = res.json();
return body || { } ;
}
body.data || {}; 错误
身体|| {}; 正确
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.