Angular8-从FormData获取值

Angular8-从FormData获取值,angular,typescript,Angular,Typescript,我想从我的FormData对象中获取值: 我的弹出窗口中的save()方法,我可以在其中上载文件: 使用有效负载和所选文件创建FormData对象的方法: getFrameworkPayload()方法: 在Observable方法中,我必须将框架ID也传递给服务方法editFramework,但我不能在中传递2个参数 frameworkEdited(editedFramework: FormData): void { this.service.editFramework(editedFram

我想从我的
FormData
对象中获取值:

  • 我的弹出窗口中的save()方法,我可以在其中上载文件:
  • 使用有效负载和所选文件创建FormData对象的方法:
  • getFrameworkPayload()方法:
  • 在Observable方法中,我必须将框架ID也传递给服务方法editFramework,但我不能在中传递2个参数

    frameworkEdited(editedFramework: FormData): void {
     this.service.editFramework(editedFramework).pipe(
    
    //这里我需要FormData的ID
    editFramework(有效负载:FormData):可观察{
    返回this.http.put(`${this.url}/${payload['id']}`,payload);
    }
    

    因此,我需要从我的有效负载中获取ID:FormData。我尝试了payload.getAll('payload'),但是我得到了一个带有键值的字符串。。。也许我应该以某种方式将这个字符串转换到IFrameworkPayload中并获取get ID???

    我能想到的最佳选择是重构editFramework()方法,使其接收有效负载,然后在方法内创建FormData,如下所示:

     editFramework(payload: IFrameworkPayload): Observable<IFramework> {
        const formData = new FormData();
        formData.append('payload', JSON.stringify(payload);
        if (!isNil(this.fileToUpload)) {
           formData.append('file', this.fileToUpload, this.fileToUpload.name);
        }
    
        return this.http.put<IFramework>(`${this.url}/${payload['id']}`, formData);
      }
    
     save() {
          this.frameworkEdited.next(this.getFrameworkPayload());
     }
    
     frameworkEdited(payload: IFrameworkPayload): void {
          this.service.editFramework(payload).pipe(
    
    如果出于任何原因,您不喜欢这种方法,可以使用FormData.values()方法来获取值。您需要使用JSON.parse()将数据从JSON重新转换为IFrameworkPayload。不过,这似乎是不必要的工作

    frameworkEdited(editedFramework: FormData): void {
     this.service.editFramework(editedFramework).pipe(
    
    //HERE I NEED ID from FormData
     editFramework(payload: FormData): Observable<IFramework> {
        return this.http.put<IFramework>(`${this.url}/${payload['id']}`, payload);
      }
    
     editFramework(payload: IFrameworkPayload): Observable<IFramework> {
        const formData = new FormData();
        formData.append('payload', JSON.stringify(payload);
        if (!isNil(this.fileToUpload)) {
           formData.append('file', this.fileToUpload, this.fileToUpload.name);
        }
    
        return this.http.put<IFramework>(`${this.url}/${payload['id']}`, formData);
      }
    
     save() {
          this.frameworkEdited.next(this.getFrameworkPayload());
     }
    
     frameworkEdited(payload: IFrameworkPayload): void {
          this.service.editFramework(payload).pipe(