У меня проблема после обновления библиотек до новых Angular 6 и RxJS 6.
У меня есть RouteService
класс, который работает как сервис. Он использует HttpClient
для получения данных от удаленного API. После обновления я получаю странную ошибку при попытке скомпилировать проект.
Вот мой класс обслуживания:
import {Injectable} from '@angular/core';
import {HttpClient} from "@angular/common/http";
import {Observable} from "rxjs/Rx";
import {catchError} from 'rxjs/operators';
export interface Route {
name:string;
route_id:number;
created_at:Date;
}
@Injectable()
export class RouteService {
constructor(private http:HttpClient) {}
getRoutesList():Observable<Route[]> {
return this.http.get<Route[]>(`http://localhost:8090/api/routes`)
.pipe(catchError(ServiceUtil.handleError));
}
}
Вот метод handleError:
import {HttpErrorResponse} from '@angular/common/http';
import {ErrorObservable} from 'rxjs/observable/ErrorObservable';
export module ServiceUtil {
export function handleError(error:HttpErrorResponse) {
if (error.error instanceof ErrorEvent)
console.error('An error occurred:', error.error.message);
else
console.error('An error occurred:', JSON.stringify(error.error));
return new ErrorObservable(error.error);
}
}
После ng serve
Я получаю ошибку:
ERROR in src/app/service/route-service/route.service.ts(21,5): error TS2322: Type 'Observable<{} | Route[]>' is not assignable to type 'Observable<Route[]>'.
Type '{} | Route[]' is not assignable to type 'Route[]'.
Type '{}' is not assignable to type 'Route[]'.
Property 'includes' is missing in type '{}'.
Failed to compile.
Что я делаю не так? Что-то не так с моим кодом, который вызывает ошибку в новых версиях, но работает в старой? Или что-то изменилось?