I am trying to make an http request inside a Promise function.
I get the this.http.post
is undefined error...
I know that I somehow have to access this
some other way but I did not understand how to do it.
Anyone willing to help me out?
doUpload(files: Array<File>): Promise<Array<UploadResult>> {
console.log(files);
return new Promise((resolve, reject) => {
setTimeout(() => {
let result: Array<UploadResult> = [];
for (let file of files) {
this.http
.post(this.APIURL + "/image/upload/markdown", file)
.subscribe((data) => {
console.log(data);
});
result.push({
name: file.name,
url: `https://avatars3.githubusercontent.com/${file.name}`,
isImg: file.type.indexOf("image") !== -1,
});
}
resolve(result);
}, 3000);
});
}
The error:
> TypeError: undefined is not an object (evaluating 'this.http.post')
> (anonyme Funktion) — sensor-edit.component.ts:308
> onInvokeTask — core.js:39680
> runTask — zone-evergreen.js:168
> invokeTask — zone-evergreen.js:465
> timer — zone-evergreen.js:2650
The constructor:
constructor(
private fb: FormBuilder,
private route: ActivatedRoute,
private api: ApiService,
private _routerService: Router,
private errorService: ErrorModalService,
private sanitizer: DomSanitizer,
private http: HttpClient
) {}
And doUpload
is called in my Html like this:
<div class="container well come-space">
<md-editor formControlName="markdown" name="Content" [height]="'400px'" [upload]="doUpload">
</md-editor>
</div>