Я использую Angular 6
и Reactive Form
Мне нужно загрузить изображение аватара пользователя, и для этого я создал компонент изменения аватара со следующим содержимым.
import {Component, OnInit, ViewChild} from '@angular/core';
import {AccountService} from '../account.service';
import {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';
@Component({
selector: 'app-change-avatar-modal',
templateUrl: './change-avatar-modal.component.html',
styleUrls: ['./change-avatar-modal.component.css']
})
export class ChangeAvatarModalComponent implements OnInit {
changeAvatarForm: FormGroup;
@ViewChild('avatar') User_Avatar;
userAvatarFile: File;
constructor(
private accountService: AccountService,
private formBuilder: FormBuilder
) { }
ngOnInit() {
this.changeAvatarForm = this.formBuilder.group({
avatar: new FormControl('', [
Validators.required
])
});
}
get f() {
return this.changeAvatarForm.controls;
}
onSubmit() {
const image = this.User_Avatar.nativeElement;
if (image.files && image.files[0]) {
this.userAvatarFile = image.files[0];
}
const avatarFile: File = this.userAvatarFile;
console.log(avatarFile);
const formData: FormData = new FormData();
formData.append('avatar', avatarFile, avatarFile.name);
console.log(formData);
const data = {'avatar': formData};
this.accountService.changeAvatar(data).subscribe(
res => {
console.log(res);
}
);
}
}
и в файле шаблона
<form [formGroup]="changeAvatarForm" #formDir="ngForm" method="post" (submit)="onSubmit()">
<input type="file" class="form-control" id="input-avatar" formControlName="avatar" #avatar>
<button type="submit">Change Avatar</button>
</form>
Но когда я отправляю data
, используя POST
к конечной точке API.Он отправляет пустое поле avatar
.
Даже полезная нагрузка запроса не содержит данных.