I am trying to mock some data which will be displayed in an angular form.
I have a service which returns an Observable of type myObject[], I had tried to mock the data by hardcoding an array of this type and using from to create the observable. eg.
private getMockMyObjects(): MyObject[] {
const myObjects: MyObject[] = [{
name: 'AB',
code: '123'
},{
name: 'CD',
code: '456'
}];
return myObjects;
}
public getMyObjects(): Observable<MyObject[]> {
const result = this.getMockMyObjects()
return from(result);
}
However I get the error Type 'Observable<MyObject>' is not assignable to type 'Observable<MyObject[]>', why does from(result) create an Observable<MyObject> rather than Observable<MyObject[]>?
>Solution :
from takes an iterable and converts it to an observable, which will emit all objects contained in this iterable in order (see https://rxjs.dev/api/index/function/from). If you want to create an observable which will emit one single array, you should use the of operator instead (see https://rxjs.dev/api/index/function/of). This will only emit the single value you passed to it and then complete the observable.