typescript - Returnera en null/tom Observable i Angular 6 med Rxjs 6
Jag arbetar med Angular 6 med Rxjs 6 och har en fråga om att returnera en null/tom Observable om svaret misslyckas eller har ett undantag. Här är min antagande: min fjärr-API kommer att returnera ett objekt av IOptionResponse, det innehåller en meddelandesträng som kan vara 'SUCCESS' eller 'FAILED', det innehåller också en modell som är en array av 'IOption'-objekt
export interface IOptionResponse {
message: string;
model: IOption[];
}
Här är namnet på min servicemetod, det kommer att returnera en Observable av IOption-array som är "modellen" för mitt fjärr-API-resultat
loadIOptionMembersRelationship(): Observable<IOption[]> {
return this.httpClient.get<IOptionResponse>('${environment.apiUrl}/api/member/XXX')
.map(
(response) => {
console.log(response);
// if response.message is success, return IOption[] model
if (response.message == responseMessage.Success) {
return response.model;
}
else {
// return Observable.empty<IOption[]>(); failed
// return new Observable.empty<IOption[]>(); failed
// return new EmptyObservable<IOption[]>(); failed
// return new Observable<IOption[]>.from([]); failed
// Otherwise return a NULL/EMPTY Observable
//What should be the correct way to implement here???
}
}
);
}
Jag har läst inlägget här som är liknande, men jag har provat alla möjliga lösningar och de fungerar inte, jag är inte säker på om det beror på att de publicerade lösningarna är föråldrade eller kanske att någon metod har ändrats i rxjs 6 eller kanske är det ett TypeScript-problem...
Svar #1
Om du vill returnera en tom Observable-array medan du använder Rxjs6, behöver du...
import { of } from 'rxjs';
Då där vill du returnera din tomma Observable-array av typen <IOption[]> ...
return of<IOption[]>([]);
