Reputation: 1
I was trying to upgrade my angular app from v4 to v9 while i faced this error:
Type 'Observable' is not assignable to type 'Observable'
The error occurs here (mock-sidebar.service.ts)
return ObservableCreator.createFromData(SIDEBAR)
mock-sidebar.service.ts
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);
}
}
observable-creator.ts
import { Observable } from 'rxjs';
export class ObservableCreator {
public static createFromData(data: any) {
const observable = new Observable((observer: any) => {
observer.next(data);
observer.complete();
});
return observable;
}
}
Upvotes: 0
Views: 110
Reputation: 8052
One way to fix your problem:
public static createFromData(data: any) {
return of(data);
}
Another way to fix your problem using generics:
public static createFromData<T>(data: T): Observable<T> {
return new Observable<T>(observer => {
observer.next(data);
observer.complete();
});
}
Upvotes: 1