В моем угловом приложении я обновляюсь с Http до HttpClient, который, кажется, не работает при работе с Promises.
Кажется, что вам нужно использовать небольшой обходной путь при работес обещаниями в httpClient я попытался сделать это, как в этой статье: https://vitalflux.com/angular-promise-explained-code-example/, но безрезультатно.
Я также попытался работать с Observable вместо этого (и подписаться в component.ts), но это также не сработало.
service.ts ( со старым Http , работает как шарм)
public viewPDF(profileId: string, profileVersion: Date): Promise<any> {
const pdfVersion = _.split(_.replace(profileVersion.toISOString(), /:/g, '-'), '.')[0];
return this.http
.get(`${this.pdfApiView}/${profileId}/${pdfVersion}`)
.toPromise()
.then(response => response);
}
service.ts (- теперь с HttpClient )
public viewPDF(profileId: string, profileVersion: Date): Promise<any> {
const pdfVersion = _.split(_.replace(profileVersion.toISOString(), /:/g, '-'), '.')[0];
return this.httpClient
.get<any>(`${this.pdfApiView}/${profileId}/${pdfVersion}`)
.toPromise()
.then(response => response);
}
component.ts
this.pdfDocumentService.viewPDF(prof[0].id, prof[0].version).then(resp => {
if (resp._body !== 'file not found') {
this.pdfList.set(prof[0].id + prof[0].version, resp.url);
}
});
Новый метод приводит к появлению следующих сообщений об ошибках:
ERRORОшибка: Uncaught (в обещании): HttpErrorResponse: {"headers": {"normalizedNames": {}, "lazyUpdate": null}, "status": 200, "statusText": "OK", "url": "http://localhost:4200/api/pdfFile/i1cib1pgvk000000/2019-04-02T12-47-57","ok":false,"name":"HttpErrorResponse","message":"Http ошибка во время анализа для http://localhost:4200/api/pdfFile/i1cib1pgvk000000/2019-04-02T12-47-57","error":{"error":{},"text":"%PDF-1.3\n%����\n6 0 obj \ n << \ n / Type / Page \ n / Parent 1 0 R \ n / MediaBox ... </p>