Angular подписывайся на наблюдаемый потом возвращай новый
Я использую HttpClient для get
данные из веб-сервиса. Я хочу подписаться на полученные данные и преобразовать их из JSON в реальные классы, а затем получить Observable
из этих классов, возвращенных из метода. В основном, когда звонящий subscribe
пожары, я хочу, чтобы получить классы.
Я довольно плохо знаком с угловатыми и наблюдаемыми, так что я не уверен, как это сделать. Итак, я хочу что-то вроде:
constructor(private http: HttpClient) {}
getExistingArsByLab(labId: number) : Observable<EhsAssessmentAr[]> {
return this.http.get("...")
.subscribe(json => json.map(obj => {
let ar = new EhsAssessmentAr();
ar.id = obj['id'];
...
return ar;
}));
}
что, конечно, на самом деле не компилируется, и тогда вызывающая сторона просто сделает:
this.getExistingArsByLab(12).subscribe(ars => { ... });
и в этот момент я бы ars
как фактический EhsAssessmentAr[]
,
2 ответа
В сочетании с ответом @Antoniosss, я думаю, что это должно решить вашу проблему:
getExistingArsByLab(labId: number) : Observable<EhsAssessmentAr[]> {
return this.http.get("...")
.pipe(map(obj => {
return obj.map(element => {
let ar = new EhsAssessmentAr();
ar.id = element['id'];
...
return ar;
});
}));
}
Обратите внимание, что map
от Observable
отличается от Array.map()
Не подписывайтесь сразу, но pipe
а также map
getExistingArsByLab(labId: number) : Observable<EhsAssessmentAr[]> {
return this.http.get("...")
.pipe(map(obj => {
let ar = new EhsAssessmentAr();
ar.id = obj['id'];
...
return ar;
}));
}
Вы должны исправить скобки и добавить правильное отображение.