Я думаю, что здесь чего-то не хватает, поскольку я нахожу использование Angular http.get с pipe (map) из RXJS довольно противоречивым:
Бэкэнд возвращает массив простых объектов (см. Unifiedparams интерфейс ниже). Я хочу извлечь Observable<String[]>
и передать его в app.component.html , где я использую *ngFor="let param of params$ | async"
для создания раскрывающегося списка.
Кажется, я не могу получить доступ к атрибуту name без вложенных карт, хотя возвращаемый json представляет собой одномерный массив.
fetchParams(): Observable<String[]>{
const result = this.http.get<unifiedParam[]>('http://localhost:5000/getparams');
const params:Observable<String[]> = result.pipe(map(unifiedParams => res.map(unifiedParam=>unifiedParam.name)));
return params;
}
Это, кажется, указывает на то, что Observable является самим массивом, но использование this.http.get<unifiedParam>
и rows:Observable<String>
соответственно приводит к тому, что строк будет пустым:
fetchParams(): Observable<String>{
const result = this.http.get<unifiedParam>('http://localhost:5000/getparams');
const params:Observable<String> = result.pipe(map(unifiedParam=> unifiedParam.name)));
params.pipe(tap(console.log)); //doesn't print anything
return params;
}
Итак, мой вопрос здесь, если использовать Observable<UnifiedParam[]>
и .pipe(map(res=>map(el=>el.name)
- это путь.
Спасибо!
Обновление: забыл интерфейс:)
интерфейс unifiedParam {
имя: строка,
Источник: Строка
}; * * Тысяча тридцать одна
Обновление 2: чтобы уточнить, что меня озадачивает:
Зачем мне нужна внешняя функция map ().
Не определен ли map () для массивов?