Угловой: Вы указали «неопределенный», где ожидался поток

#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. Затем потребитель может решить, что делать, если выходное значение равно нулю.