将 http.post 之后的数据传递给组件

Pass data after http.post to component

我正在开发一个小型网络应用程序。 现在我尝试实现一个文件上传功能。一切正常。我可以上传,保存在服务器上,也可以接收文件路径。

我现在纠结的事情是如何将路径传递回组件。

我尝试了几种解决方案,但我不确定使用什么以及如何修改代码。

我应该使用 async、await 还是 Eventemitter、Observable 等...?

以及如何正确使用它们以接收组件中的路径,我知道我必须等待服务功能完成。

服务中的函数

  // Images hochladen
  uploadImage(postData: FormData): string{
    this.http.post('https://10.0.0.3:3000/api/upload/image', postData)
    .subscribe((responseData) => {
      this.imgPath = responseData['path'];
      console.log(this.imgPath)
    });
    return this.imgPath;
  };

而在组件中

const imgPath = this.projectsService.uploadImage(dataFile);
console.log(imgPath);

感谢您的帮助:-)

此致

马库斯

两个主要选择:

使用承诺:

服务:

async uploadImage(postData: FormData): Promise<string> {
    const promise = this.http.post('https://10.0.0.3:3000/api/upload/image', postData).toPromise();
    return (await promise)['path'];
  };

组件:

async something() {
  const imgPath = await this.projectsService.uploadImage(dataFile);
  console.log(imgPath);
}

使用可观察对象:

服务:

uploadImage(postData: FormData): Observable<string> {
    return this.http.post('https://10.0.0.3:3000/api/upload/image', postData)
               .pipe(last(),map(r => r['path']));
  };

组件:

something() {
  this.projectsService.uploadImage(dataFile).subscribe(imgPath => {
     console.log(imgPath);
  }
}