Mam problem z tslint, gdy próbuję zarządzać wynikiem wywołania XMLHttpRequest, które wykonuję, aby przesłać pliki. Oto moja obecna metoda znalazłem w internecie:XMLHttpRequest z obserwowalnym w maszynie maszynowej
// Files upload request
makeFileRequest(url: string, files: Array<File>) {
return new Promise((resolve, reject) => {
let formData: any = new FormData()
let xhr = new XMLHttpRequest()
for(let file of files) {
formData.append("uploads[]", file, file.name)
}
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
resolve(JSON.parse(xhr.response))
} else {
reject(xhr.response)
}
}
}
xhr.open("POST", url, true)
xhr.send(formData)
})
}
Tak to działa, pliki są przesyłane i backend odpowiada odpowiedź 200. Ale w sposobie gdzie mogę korzystać z tej funkcji, to zrobić:
this.makeFileRequest("theurl", this.listFiles)
.map(res => res.json())
.subscribe(
res => console.log(res),
error => console.log("fails")
)
ale tslint mówi mi to co z punktu na mapie:
TS2339 Property 'map' does not exist on type 'Promise<{}>'.
więc myślę, że byłoby lepiej zarządzać makeFileRequest funkcja, więc zwraca Observable zamiast Promise. I na wszelki wypadek, uwaga importuję "rxjs/add/operator/map".
Czy ktoś ma pomysł? Dzięki !
Dzięki, że działa, aby zrobić to, o co prosiłem :) Nadal mam problem, ponieważ json "Property" nie istnieje na typie "{}" w linii .map, ale to kolejny problem :(Ale to dziwne, robię to w innych obserwowalnych instrukcjach mapowania – Guigui
'json()' jest metodą z odpowiedzi, ponieważ zwykle w http Obserwowane zwraca obiekt odpowiedzi. –
Mam ten błąd: Nie udało się otworzyć na XMLHttpRequest: nieprawidłowy URL Używam kątowego 2, czy możesz mi pomóc? Jestem prawie pewien, że to nie jest adres URL, ale jestem nowy z kątowym 2 –