Angular 7 - .json() 的 HttpClient 问题

标签 angular observable httpclient angular7

我试图将我从 json 得到的响应转换成一个数组:

export class PostsService {
  apiRoot: string = "https://public-api.wordpress.com/rest/v1.1/sites/en.blog.wordpress.com/posts/?number=3";
  results: PostsItem[];
  loading: boolean;

  constructor(private http: HttpClient) {
    this.results = [];
    this.loading = false;
  }

  getPosts(term: string): Observable<PostsItem[]> {
    let apiURL = `${this.apiRoot}`;
    return this.http.get(apiURL)
    .map( res => {
      let results = res.json().results.map( item => {
        return new PostsItem(
          item.ID,
          item.post_thumbnail,
          item.date,
          item.title,
          item.url,
          item.author,
          item.avatar
        );
      })
      return results;
    });
  }
}

而且我知道当我使用 HttpClient 而不是 Http 时,不需要使用 .json() 但我在语法上苦苦挣扎。

最佳答案

你应该查看 API 响应的 posts 属性,像这样(使用 arrow functions 简化):

getPosts(): Observable<PostsItem[]> {
return this.http
  .get(this.apiRoot)
  .map(res =>
    res.posts.map(
      item =>
        new PostsItem(
          item.ID,
          item.post_thumbnail,
          item.date,
          item.title,
          item.url,
          item.author,
          item.avatar
        )
    )
  );
}

现在 results 是一个 PostItem 数组 enter image description here

我已经创建了一个工作演示,你可以在这里查看 -> https://codesandbox.io/s/78w2vl0p0

关于Angular 7 - .json() 的 HttpClient 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55195691/

相关文章:

angular - 如何使用 ngFor 连续迭代两个元素?

javascript - 热可观察值何时发出第一个值?

angular - 组件销毁并重新访问后,订阅在 ngOnInit 函数中运行

kotlin - 如何在 ktor-client 中禁用重定向

android - 在 Android 上使用 HttpClient 的 SSL

angular - .NET 核心 2.0 Angular 5 : Allowing Cors

使用注入(inject)提供程序的 Angular 异步表单验证

javascript - 返回数据时 Observable 订阅不执行

http - Apache HttpClient 仅在同一 HttpContext 中重用连接

angular - 无法读取空 Angular 4 的属性 'dispose'