javascript - 为什么提交表单时我的FormData是空的?

标签 javascript angular typescript forms ionic-framework

我的 formData 使用响应式表单的输入:categoryForm。我必须这样做才能上传我的数据。但是当我提交我的 formData 和 console.log 时,我得到的只是:FormData {} 一个空表单。但我不知道为什么,因为我使用 this.categoryForm.get('name').value 获取每个数据的值 我的响应式(Reactive)表单实际上是在接收数据并且表单拥有所有数据,所以问题是 formData 没有获取数据。

html:

<form [formGroup]="categoryForm">
                    <ion-item mode="ios" lines="none" class="checkbox-tag rounded-tag">
                        <ion-icon name="eye"></ion-icon>
                      <ion-checkbox formControlName="lock"></ion-checkbox>              

<div> 
    <ion-item>
      <ion-input [disabled]="tagList?.length > 0" mode="md" formControlName="category" clearInput="true" placeholder="Tag" name="tagValue"></ion-input>
      <ion-button (click)="addTag()" [disabled]="!categoryForm.valid || tagList?.length > 0"  item-right icon-only>
      <ion-icon name="checkmark"></ion-icon>
    </ion-button>
    </ion-item>
</div>

</form>

</ion-content>

<ion-footer">

        <ion-button 
        [disabled]="!tagList?.length > 0" 
        (click)="apiSubmit()"
        expand="block" 
        color="secondary" 
        fill="solid"
        >POST</ion-button>
  </ion-footer>

:

     ngOnInit() {

  this.storage.get('image_data').then((imageFile) => {
      console.log(imageFile)
      this.categoryForm.patchValue({
        'image': this.storage.get('image_data')
      });

      this.storage.get('when').then((whenData) => {
        this.categoryForm.patchValue({
          'when': this.storage.get('when')
        });
      });
    });

        this.categoryForm = new FormGroup({

          'lock': new FormControl(true),


          'category': new FormControl('', Validators.compose([
            Validators.maxLength(25),
            Validators.minLength(1),
            Validators.required
          ])),

          'image': new FormControl(null),
          'when': new FormControl(null),
        });

    }

    apiSubmit() {
      const formData = new FormData();
      formData.append('lock', this.categoryForm.get('lock').value);
      formData.append('category', this.categoryForm.get('category').value);
      formData.append('image', this.categoryForm.get('image').value);
      formData.append('when', this.categoryForm.get('when').value);
      console.log(formData);

      this.http.post<any>(`{this.url}`, formData, httpOptions).subscribe(
        (res) => console.log(res),
        (err) => console.log(err)
      );
    }

最佳答案

为什么不使用 categoryForm 本身来获取值,如下所示:

const value = this.categoryForm.value

关于javascript - 为什么提交表单时我的FormData是空的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59311833/

相关文章:

javascript - Node.js + 请求 - 保存远程文件并在响应中提供它

angular - Ag-Grid 编辑数据并发送到服务器

reactjs - 更漂亮的冲突? (问号和点)在 typescript-react 中的 prop-bracket 中出现语法错误

reactjs - 如何强制react-router-v6 路由上存在searchParams?

JavaScript "removeEventListener"不工作

javascript - 检查空值并发出警报

javascript - 无法向 amchart 股票图表添加超过 2 个图表

angular - 将服务用于 Angular 简单实用功能的要点

javascript - Typescript Angular HTTP 请求仅获取最后结果

Angular 4/5 - 路线 paramMap 与 params