Angular return [对象对象]

Angular return [object Object]

我正在尝试发送 post 请求。但是 API returns 未定义,我将它发送到我的 API,结果是 [object Object]

getAccouting():Observable<any>{
    // let json = this.http.get<any>('/assets/cities/altayskiy_kray/accounting.json'); if i use it json return undefined
    let json;
    this.http.get('/assets/cities/altayskiy_kray/accounting.json').pipe(data=>json=data);
    let formData:FormData = new FormData;
    formData.append('json', json);
    return this.http.post<any>('http://api/api.php', formData);
  }

如何解决?

http.get 是异步的,所以它不会在 return 之前发出 http.post。因此,json 将是未定义的。

相反,您可以链接它们并 return 整个可观察对象:

getAccouting(): Observable<any>{
  return this.http.get('/assets/cities/altayskiy_kray/accounting.json').pipe(
    switchMap(json => {
      return this.http.post<any>('http://api/api.php', json);
    }
  );
}

是否需要使用FormData?如果您追加 json 对象,那么您将获得它的字符串值:[object Object].

您可以将 json 对象字符串化,但您必须在服务器上对其进行解码:

formData.append('json', JSON.stringify(json))