首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在angular 6中使用Reactive form发送带有另一个FormControl的FormData?

如何在angular 6中使用Reactive form发送带有另一个FormControl的FormData?
EN

Stack Overflow用户
提问于 2018-09-05 22:26:49
回答 1查看 8.4K关注 0票数 3

我用angular 6的reactive form制作了一个带有电子邮件用户名和头像等字段的表单。我知道我需要表单数据来上传图像,但我不知道如何在angular 6中使用reactive form。有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-06 04:15:35

试试这个:

代码语言:javascript
复制
<form [formGroup]="yourForm" (ngSubmit)="onSubmit()">
   <input type="text" formControlName="email"> <br>
   <input (change)="uploadDocument($event)" type="file" accept=".png, .pdf, .jpg, .jpeg"> <br>
   <input (change)="onSubmit()" type="submit" value="Send file">
</form>

在你的app.component.html中,然后:

代码语言:javascript
复制
import { Component } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  yourForm: FormGroup;

  constructor(private fb: FormBuilder, private http: HttpClient) {
    this.yourForm = this.fb.group({
      email: [''],
      file: ['']
    });
  }

  uploadDocument(event: any) {
    if (event.target.files && event.target.files[0]) {
      const reader = new FileReader();
      reader.onload = () => {
        this.yourForm.get('file').setValue(event.target.files[0]);
      };
      reader.readAsDataURL(event.target.files[0]);
    }
  }

  onSubmit(): void {
    const uploadData = new FormData();
    uploadData.append('email', this.yourForm.get('email').value);
    uploadData.append('file', this.yourForm.get('file').value);
    this.http.post('your-route', uploadData);
  }
}

在您的app.component.ts中,并且:

代码语言:javascript
复制
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { HelloComponent } from './hello.component';
import { HttpClientModule } from '@angular/common/http';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    HttpClientModule,
    FormsModule,
    ReactiveFormsModule
  ],
  declarations: [AppComponent, HelloComponent],
  bootstrap: [AppComponent]
})
export class AppModule { }

在您的app.module.ts文件中。另外,不要忘记在this.http.post('your-route', uploadData);行中配置路由。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52187538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档