Я пытаюсь загрузить файл на сервер с помощью службы, которая передает файл на серверную часть php. Это работает, но только один раз. Если я попытаюсь повторить загрузку другого файла (без перезагрузки страницы), он не будет отправлен, и возникнет эта ошибка: ОШИБКА TypeError: «this.fileManagerService.uploadFile не является функцией»
площадка.component.html
<form [formGroup] = "form" (ngSubmit) = "onSubmit()">
<input type = "file" name = "avatar" (change) = "onFileSelect($event)" />
<button type = "submit">Upload</button>
</form>
площадка.component.ts
export class PlaygroundComponent implements OnInit {
form: FormGroup;
fileManagerResponse;
constructor(private formBuilder: FormBuilder, private fileManagerService: FileManagerService) { }
ngOnInit() {
this.form = this.formBuilder.group({
avatar: ['']
});
}
onFileSelect(event) {
if (event.target.files.length > 0) {
const file = event.target.files[0];
this.form.get('avatar').setValue(file);
}
}
onSubmit() {
const formData = new FormData();
formData.append('avatar', this.form.get('avatar').value);
this.fileManagerService.uploadFile(formData).subscribe(
(res) => {
this.fileManagerService = res;
console.info(res);
},
(err) => {
console.info(err);
}
);
}
}
FileManagerService.ts
export class FileManagerService {
SERVER_URL: string = "http://127.0.0.1/backend/api/";
constructor(private httpClient: HttpClient) { }
public uploadFile(data) {
let uploadURL = `${this.SERVER_URL}/filemanager/upload.php`;
return this.httpClient.post<any>(uploadURL, data);
}
}
Ошибка произошла в строке ниже.
this.fileManagerService = res;
Вы не можете назначить res
экземпляру FileManagerService
.
Убери это. Все будет хорошо.