Я знаю, что это общий вопрос, но я исчерпал Google и перепробовал много подходов. Любая обратная связь приветствуется.
HTTPClient равен Angular 5+, поэтому он возвращает объект, созданный из данных JSON ответа.Я получаю массивный ответ JSON от конечной точки, над которой у меня нет контроля, и я хочу использовать около 20% ответов в своем приложении и игнорировать остальные.
Я действительно очень стараюсь избежать использования сериишаблоны или объекты экспорта или что-то еще и пытаясь заставить этот массивный нетипизированный Observable в типизированный объект с сотнями полей, многие из которых являются Массивами.Все, что мне нужно для приложения, это просто массив очень маленьких объектов с 3 полями на объект.Все три поля в ответе JSON заполнены, и я хочу сопоставить их с моим объектом. Кажется, что карта работает только при использовании объекта полного ответа, и я не могу найти пример, где .map выполняет пользовательскую работу, кроме как вслучай, когда вы отображаете несколько полей на 1 объект, и я пытаюсь сопоставить массив моих маленьких объектов.
ОБНОВЛЕНО
В основном я хочу, чтобы этот сервисвернуть объект типа DislayData в модуль, который подписывается на него, но я получаю только объект обратно.Это не то, что мне в конечном итоге нужно сделать, но если я смогу доказать, что могу сопоставить тело ответа с моим необходимым типом возвращаемого значения, я смогу затем разбить тело ответа и вернуть массив того типа, который мне действительно нужен, основываясь на моемглупый объект DisplayData.Еще раз спасибо!
export interface DislayData {
body: any;
}
...
export class DataService {
constructor(private http: HttpClient) { }
/** GET data from the black box */
getData(): Observable<DislayData> {
return this.http.get<HttpResponse<any>>(searchUrl, { observe: 'response' })
.pipe(
map(res => {
return res.body as DislayData;
}
tap(res => console.log(//do stuff with entire respoonse also)),
catchError(err => this.handleError(err)));
}
private handleError(error: HttpErrorResponse) {
...