Я обновил Angular до версии 7 в своем приложении, и мне нужно немного изменить свой код после обновления, но я не уверен, как это сделать.
Это пример кода для изменения (впредыдущая версия Angular):
get(): Observable<MyResponseClass | null> {
let url_ = some_url;
let options_: any = {
method: "get",
headers: new Headers({
"Content-Type": "application/json",
"Accept": "application/json"
})
};
return this.http.request(url_, options_).flatMap((response_: any) => {
return this.getResponse(response_);
}).catch((response_: any) => {
if (response_ instanceof Response) {
try {
return this.getResponse(<any>response_);
} catch (e) {
return <Observable<MyResponseClass | null>><any>Observable.throw(e);
}
} else
return <Observable<MyResponseClass | null>><any>Observable.throw(response_);
});
}
Для этого вопроса не имеет значения, какие они getResponse
и MyResponseClass
, поэтому я пропущу объяснение этого.
ОКпоэтому первый шаг - это изменение .flatMap на .pipe () и map () из-за этого:
Свойство flatMap не существует для типа Observable .
Итак, после этого изменения мой код выглядит следующим образом:
return this.http.request(url_, options_).pipe(map((response_: any) => {
return this.getResponse(response_); })
).catch((response_: any) => {
if (response_ instanceof Response) {
try {
return this.getResponse(<any>response_);
} catch (e) {
return <Observable<MyResponseClass | null>><any>Observable.throw(e);
}
} else
return <Observable<MyResponseClass | null>><any>Observable.throw(response_);
});
И теперь у меня появляется такая ошибка:
Свойство 'catch' не существуетпо типу 'Наблюдаемый'.
И здесь у меня проблема, потому что я действительно не знаю, что мне следует изменить.Я все еще ищу информацию в Google и переполнение стека, но пока безуспешно.Может быть, у меня недостаточно знаний об этом.
Ты поможешь мне с этим?