Я новичок в rxjs и Angular, и я только что обнаружил (благодаря моему WebStorm, выдающему множество красных сообщений об ошибках), что rxjs5 сильно отличается от версии 6.
Итак, я следую этому руководству, которое направляет пользователей через сборку службы API с помощью rxjs. Проблема в том, что он написан для версии 5.
Вот пример маршрута API, написанного в версии 5:
public getAllTodos(): Observable<Todo[]> {
return this.http
.get(API_URL + '/todos')
.map(response => {
const todos = response.json();
return todos.map((todo) => new Todo(todo));
})
.catch(this.handleError);
}
После прочтения документации я переписал маршрут версии 6 до этой точки:
public getAllTodos(): Observable<Todo[]> {
return this.http
.get(API_URL + '/todos')
.pipe(
map(response => {
return response.map((todo) => new Todo(todo));
}),
catchError(this.handleError)
);
}
Проблема в том, что я получаю:
Свойство «карта» не существует для типа «Объект».
Я предполагаю, что это связано с тем, что ответ не в формате json, хотя ответ, похоже, не имеет метода .json ().
pipe ( tap(v => console.log(v)))
- ваш друг. Проверьте все, что вы наблюдаете на этом этапе, и соответствующим образом адаптируйте код. - person c69   schedule 31.07.2018return this.http.get<Todo[]>(url).pipe( map( res => res.map(todo => new Todo(todo)), catchError(handleErr) );
- обратите внимание на общийget
. - person c69   schedule 31.07.2018