类型 'Observable<any[] | Observable<any[]>>' 不可分配给类型 'Observable<any[]>'
Type 'Observable<any[] | Observable<any[]>>' is not assignable to type 'Observable<any[]>'
我正在使用 ng-select v2 和 angular 7.
下面的 return 语句出现错误
getHospital(term: string = null): Observable<Hospitals[]> {
let items = this.getHospitals1();
if (term) {
items = items.pipe(
filter((x,i) => x[i].name.toLocaleLowerCase().indexOf(term.toLocaleLowerCase()) > -1)
)
}
return of(items).pipe(delay(500));
}
3 个错误,表示:
- Type 'Observable>' is not assignable to type 'Observable'.
- Type 'Hospitals[] | Observable' is not assignable to type 'Hospitals[]'.
- Type 'Observable' is not assignable to type 'Hospitals[]'.
这是我的 getHospitals1 函数
getHospitals1() : Observable<Hospitals[]>{
return this.http.get<Hospitals[]>('https://my-json-server.typicode.com/monsterbrain/FakeJsonServer/hospitals')
}
export interface Hospitals {
id: string;
name: string;
address: string;
}
应该更改什么来解决这个问题?
您遇到的问题与 return of(items).pipe(delay(500));
行有关。它在使用 of
函数时将 Observable<any[]>
变成了 Observable<Observable<any[]>
。只需将当前的 Observable 传递给延迟,你就可以开始了。
return items.pipe(delay(500));
我正在使用 ng-select v2 和 angular 7.
下面的 return 语句出现错误
getHospital(term: string = null): Observable<Hospitals[]> {
let items = this.getHospitals1();
if (term) {
items = items.pipe(
filter((x,i) => x[i].name.toLocaleLowerCase().indexOf(term.toLocaleLowerCase()) > -1)
)
}
return of(items).pipe(delay(500));
}
3 个错误,表示:
- Type 'Observable>' is not assignable to type 'Observable'.
- Type 'Hospitals[] | Observable' is not assignable to type 'Hospitals[]'.
- Type 'Observable' is not assignable to type 'Hospitals[]'.
这是我的 getHospitals1 函数
getHospitals1() : Observable<Hospitals[]>{
return this.http.get<Hospitals[]>('https://my-json-server.typicode.com/monsterbrain/FakeJsonServer/hospitals')
}
export interface Hospitals {
id: string;
name: string;
address: string;
}
应该更改什么来解决这个问题?
您遇到的问题与 return of(items).pipe(delay(500));
行有关。它在使用 of
函数时将 Observable<any[]>
变成了 Observable<Observable<any[]>
。只需将当前的 Observable 传递给延迟,你就可以开始了。
return items.pipe(delay(500));