Для моего приложения я рассчитываю некоторое значение в моем бэкэнде Java. Единственное, что я хочу сделать, это получить эту строку в моем интерфейсе Angular, однако я борюсь с типом Observable.
Это мой бэкэнд-вызов REST, в котором используются аннотации Spring Boot/Jersey:
@GET
@Path("/calculate/{auftragId}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String calculateAwWithJSON(@PathParam("auftragId") String auftragId) {
restLog("receiving put request /put/auftragId ->> " + auftragId);
for (AuftragREST anAuftragRepoList : auftragRepoList) {
if (anAuftragRepoList.getId().replace(" ", "").equals(auftragId)) {
restLog("successfully calculated AW the requested data!");
return ObjektprotokollCalculator.calculateAW(anAuftragRepoList).toString();
}
}
return "0";
}
Теперь единственное, что я хочу сделать, это получить эту строку в моем интерфейсе Angular. Однако я не понимаю, как это работает с Observables, вот что у меня есть:
public getFromHttpClient(url: string, json: any): Observable<string> {
return this.httpClient.get<string>(`${this.basePath}/${url}/${json.id}`);
}
Однако, когда я пытаюсь это сделать, это не работает:
let m: string = this.getFromHttpClient("auftrag/calculate", this.myObject).subscribe();
Какой самый простой способ сделать это? Что я делаю неправильно? Я не смог найти аналогичный пример, все всегда просто показывают, как это сделать с помощью массивов и тому подобного, но никто не показывает, как это делается только для одной строки.




Вам нужно добавить функцию для подписки:
let m: string;
this.getFromHttpClient("auftrag/calculate", this.myObject).subscribe((result: string) => {m = result;});
Это правильный синтаксис для этого:
this.getFromHttpClient("auftrag/calculate", this.myObject).subscribe((response) => let m: string = response;);
спасибо, но все равно получаю эту ошибку error TS2322: Type 'Subscription' is not assignable to type 'string'.
@Miger Где вы вызвали метод .подписываться?
Я делаю так: let m: string = this.myService.getFromHttpClient("auftrag/calculate", this.myObject()).subscribe(response => { return response });
Да, но где эта линия называется?
В каком-то другом компоненте, почему это важно? Может я не понимаю, что вы хотите знать..
Попробуйте удалить возвращаемый тип вашего метода getFromHttpClient
Да, вы ошиблись.. это должно быть внутри подписки вот так: this.myService.getFromHttpClient("auftrag/calculate", this.myObject()).subscribe(response => { let m: string = response });
спасибо, но все равно получаю эту ошибку
error TS2322: Type 'Subscription' is not assignable to type 'string'.