Странно, что так мало документации о том, как это сделать.
Ответ был относительно прост:
HTML должен иметь такой ввод
<input type="file" (change)="onFileChanged($event, i)">
Используя fb, вы можете извлечь значения из вашей формы с помощью чего-то вроде
const myFormValue = this.myForm.value
В файле .ts:
public onFileChanged(event: any) {
if (event.target.files && event.target.files.length) {
const file = event.target.files[0];
this.certEscolar = file;
}
}
submit() {
const myFormValue = this.myForm.value
const myFormData = new FormData();
for ( let i = 0; i < myFormValue.length; i++ ) {
for ( let key of myFormValue) {
myFormData.append(key, myFormValue[key]);
}
}
this.http.post<any>(SOMEURL, myFormData, Config.api.multiContentOptions)
.subscribe(response => {
console.log("response from server!", response)
}
Заголовки, которые я использовал, были:
Config.ts
const MultipartHeaders: HttpHeaders = new HttpHeaders({
Authorization: 'Token ' + token,
Accept: 'application/json'
});
let Config = {
api: {
baseURL: 'http://11.98.155.150/back/ws' //obviously fake
options: { headers: jsonheaders },
formatOptions: { headers : formDheaders },
multiContentOptions: { headers : MultipartHeaders },
}
};
С formArrays и FormData становится намного сложнее, если кто-нибудь попросит, я могу загрузить пример.