#angular #typescript #rxjs
Вопрос:
С приведенным ниже решением я получаю эту ошибку:
Вы указали «не определено», где ожидался поток. Вы можете предоставить Наблюдаемый, Обещающий, Массив или Повторяющийся.
проблема в том, что api findExerciseFrameworkByEntityUsingGET
возвращает значение null.
@Injectable()
export class ExerciseFrameworkRouteResolver implements Resolve<any> {
constructor(private apiExerciseFramework: APIExerciseFramework) { }
resolve(route: ActivatedRouteSnapshot) {
let array: (Observable<any[]> | Observable<any>)[] = [];
return this.apiExerciseFramework.findExerciseFrameworkByEntityUsingGET({ externalId: route.paramMap.get('entityId') }).pipe(
mergeMap((exerciseFramework: models.ExerciseFrameworkResponse) => {
if (exerciseFramework) {
array.splice(0, 0, of(exerciseFramework));
array.splice(1, 0, this.apiRefService.findPriceZonesUsingGET());
array.splice(2, 0, this.apiRefService.findIndemnityAreaUsingGET());
return forkJoin(array);
}
})
);
}
}
Ответ №1:
Чтобы решить эту проблему, вы можете добавить условие » еще «после» if (exerciseFramework)», чтобы сделать что-то вроде » возврат(null)», поэтому возврат все равно будет наблюдаемым, даже если эта служба вернет значение null. Затем потребитель может решить, что делать, если выходное значение равно нулю.