Angular中的httpclient请求数组的问题

时间:2019-05-10 15:56:13

标签: angular wordpress api

我正在使用httpclient请求从wordpress API获取数据,作为响应,我遇到了错误。似乎Array有问题。 这是我正在使用的代码

getTetimonialData() {
    this.http.get<{ testimonials: any }>(BASE_URL + '/testimonial/').pipe( map( testimonialsData => {
      // return testimonialsData;
      return {
        testimonials: testimonialsData.testimonials.map(testData => {
          return {
            id: testData.id,
            date: testData.date,
            slug: testData.slug,
            title: {
              rendered: testData.title.rendered,
            },
            yoast_meta: {
              yoast_wpseo_title: testData.yoast_meta.yoast_wpseo_title,
              yoast_wpseo_metadesc: testData.yoast_meta.yoast_wpseo_metadesc,
              yoast_wpseo_canonical: testData.yoast_meta.yoast_wpseo_canonical,
            },
            acf: {
              video_url: testData.acf.video_url,
              video_image: {
                url: testData.acf.video_image.url,
                alt: testData.acf.video_image.alt,
              }
            }
          };
        })
      };
    })).subscribe(transformData => {
      this.testimonials = transformData.testimonials;
      console.log(this.testimonials);
      this.testimonialFetch.next(this.testimonials);
    });
  }

这是错误

ERROR TypeError: Cannot read property 'map' of undefined

我什至尝试使用tesimonialData.map,因为响应已经在Array中了,但这也显示出警告类型是不允许的。

此错误适用于我不使用rxjs map函数遍历数据的行。

所以我做错什么了吗?

2 个答案:

答案 0 :(得分:1)

您的GET请求类型不正确。下面是您在评论中共享的URL的图片。

API Response

它应该是this.http.get<{ testimonials: any }>...类型,而不是this.http.get<any[]>...,因为响应是推荐列表,而不是具有testimonials属性的对象。理想情况下,您应该有一个用于类型安全的接口,因此可能不是any[]而是ServerTestimonial[]

答案 1 :(得分:0)

您能否也回答这个问题 Angular Resolver issue

对不起,没有什么好评论的名声