Angular 类型';可观察<;未知>';不可分配给类型';可观察<;边栏>';

Angular 类型';可观察<;未知>';不可分配给类型';可观察<;边栏>';,angular,typescript,rxjs,Angular,Typescript,Rxjs,我试图将angular应用程序从v4升级到v9,但遇到以下错误: 类型“Observable”不可分配给类型“Observable” 错误发生在这里(mock sidebar.service.ts) mock-sidebar.service.ts return ObservableCreator.createFromData(SIDEBAR) import { Injectable } from '@angular/core'; import { Observable } from 'rx

我试图将angular应用程序从v4升级到v9,但遇到以下错误:

类型“Observable”不可分配给类型“Observable”

错误发生在这里(mock sidebar.service.ts)

mock-sidebar.service.ts

return ObservableCreator.createFromData(SIDEBAR) 

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { ObservableCreator } from '../pages/common/observable/observable-creator';
import { Sidebar } from '../entities/sidebar';
import { SIDEBAR } from '../mocks/sidebar-mocks';

@Injectable()
export class SidebarService {
    getSidebar(): Observable<Sidebar> {
        return ObservableCreator.createFromData(SIDEBAR);
    }
}

解决问题的一种方法:

public static createFromData(data: any) {
    return of(data);
}
使用泛型解决问题的另一种方法:

public static createFromData<T>(data: T): Observable<T> {
  return new Observable<T>(observer => {
    observer.next(data);
    observer.complete();
  });
}
publicstaticcreatefromdata(数据:T):可观察{
返回新的可观察对象(观察者=>{
下一步(数据);
observer.complete();
});
}

您可以对createFromData函数使用泛型来指定它应该返回哪种类型的可观察对象。您可以尝试新的Observable((observer:any)=>{observer.next(data);observer.complete();})谢谢,它可以工作!const observable=new observable((observator:any)您的
createFromData
函数可以简单地替换为Note;问题与[rxjs]无关,而是与类型系统有关
public static createFromData<T>(data: T): Observable<T> {
  return new Observable<T>(observer => {
    observer.next(data);
    observer.complete();
  });
}