【发布时间】:2023-03-23 16:15:01
【问题描述】:
我正在创建一个 ionic 2 应用程序。对于获取响应,我使用 HttpClient 而非 Http
使用ionic generate provider JobServicesProvider创建提供程序
提供者如下所示:
import { HttpClient, HttpHeaders, HttpParams, HttpErrorResponse } from '@angular/common/http';
import { Injectable } from '@angular/core';
interface DataResponse {
userId: string;
id: string;
title: string;
}
@Injectable()
export class JobServicesProvider {
constructor(public http: HttpClient) {
console.log('Hello JobServicesProvider Provider');
}
fetchJSONData() {
return this.http.get<DataResponse>('https://jsonplaceholder.typicode.com/posts/').subscribe(data => {
},
(err: HttpErrorResponse) => {
if (err.error instanceof Error) {
console.log('Client-side error occured.');
} else {
console.log('Server-side error occured.');
}
}
);
}
}
我正在从我的组件中调用 fetchJSONData() 来获取数据。正确注入提供程序。
代码如下:
import { JobServicesProvider } from './../../providers/job-services/job-services';
import { JobDetailsMainPage } from './../job-details-main-page/job-details-main-page';
import { Component } from '@angular/core';
@Component({
selector: 'page-new-jobs-page',
templateUrl: 'new-jobs-page.html',
})
export class NewJobsPage {
newJobs: any;
constructor(private jobService: JobServicesProvider) {
this.toFetchJos();
}
toFetchJos(){
this.newJobs = this.jobService.fetchNewJobs();
console.log(this.newJobs);
}
}
我 console.log() 从提供者那里得到响应,我得到了响应,但它没有 JSON 格式的结果。如何获取 JSON 格式的数据?
这是我收到的回复的屏幕截图。谢谢!
【问题讨论】:
-
注意:当我在提供程序函数中控制数据时,我会得到 JSON 格式的结果,但是当我在组件函数中控制它时却没有得到相同的结果
-
那是因为您在服务方法内部订阅,并返回订阅对象。请检查angular.io/guide/http 注意
subscribe是在组件级别调用的。 -
这方面有什么更新吗?
标签: angular ionic2 rxjs ionic3 angular-httpclient