Javascript Angular 5服务正在从api返回数据,但组件没有向我显示数据
Angular 5中使用typescript和rxjs以及observables的大部分内容与Angular 2、4非常相似,但我似乎很难理解为什么我的组件代码没有显示数据 这是我的密码 型号:Javascript Angular 5服务正在从api返回数据,但组件没有向我显示数据,javascript,angular,rxjs,observable,Javascript,Angular,Rxjs,Observable,Angular 5中使用typescript和rxjs以及observables的大部分内容与Angular 2、4非常相似,但我似乎很难理解为什么我的组件代码没有显示数据 这是我的密码 型号: export class arsCodes { iD: number; aRSCode: string; aRSDescription: string; class: string; victimFlag: string; startDate: string; endD
export class arsCodes {
iD: number;
aRSCode: string;
aRSDescription: string;
class: string;
victimFlag: string;
startDate: string;
endDate: string;
createdByUserID: string;
createdOnDateTime: string;
modifiedByUserID: string;
modifiedOnDateTime: string;
}
工作服务
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
getArsCodesApi(search: arsCodes) {
return this.http.post(this.serviceUrl, JSON.stringify(search), httpOptions)
.map((response: Response) => {
response;
console.log(response) // WORKS
})
}
上面console.log中的“response”返回{Status:“success”,Message:,data:Array(16)}
然后
但是,在我从subscribe中的组件文件调用时,它是未定义的
arsCode: ArsCode[];
this.arsSevice.getArsCodesApi(this.model).subscribe(
result => {
//this.arsCode = result
console.log(result);
},
error => {
console.log(error);
}
)
我需要在我的组件中执行什么操作才能检索数据?问题是您的服务的.map()函数中没有返回任何内容(使用HttpClient不需要此函数) 但无论如何,你必须像这样返回:
return this.http.post(this.serviceUrl, JSON.stringify(search), httpOptions)
.map((response: Response) => {
console.log(response);
return response;
});
您正在返回map函数。在http请求中包含以下代码以返回数据:
return this.http.post(this.serviceUrl, JSON.stringify(search), httpOptions)
.map(this.extractData)
.catch(this.handleError);
从普通数据中提取是一个简单的返回:
private extractData(res: Response): Observable<any> {
return res|| { };
}
它不喜欢现在的console.log行console.log(响应)
private extractData(res: Response): Observable<any> {
return res|| { };
}
private handleError(error: any){
return Observable.throw("Data unavailable or incorrect url");
}