Мой вопрос такой же, как и в заголовке. Я не совсем понимаю, почему Angular resolver НЕ возвращает (не разрешает) какие-либо данные, когда возвращаемый объект создается с использованием of([...someData])
, но работает при использовании of([...someData]).pipe(delay(1000)
. Чтобы дать быстрый пример: resolver:
resolve(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
):
| Schedule.FetchAllSportTypesSuccess
| Schedule.FetchAllSportTypesFailed
| Observable<Schedule.FetchAllSportTypesSuccess | Schedule.FetchAllSportTypesFailed>
| Promise<Schedule.FetchAllSportTypesSuccess | Schedule.FetchAllSportTypesFailed>
{
this.store.dispatch(new Schedule.FetchAllSportTypes());
const responseOK: Observable<Schedule.FetchAllSportTypesSuccess> = this.actions$.pipe(ofAction(Schedule.FetchAllSportTypesSuccess));
const responseError = this.actions$.pipe(
ofAction(Schedule.FetchAllSportTypesFailed),
tap(() => this.router.navigate(['']))
);
return race(responseOK, responseError).pipe(first());
}
метод this.store.dispatch(new Schedule.FetchAllSportTypes())
вызывает fetchAllSportTypes
:
fetchAllSportTypes(): Observable<SportType[]>{
}
, когда реализация fetchAllSportTypes(): Observable<SportType[]>
следующая, распознаватель НЕ возвращает никаких данных, он просто сохраняетожидание:
fetchAllSportTypes(): Observable<SportType[]>{
return of([...someData])
}
, но при следующей реализации преобразователь работает должным образом:
fetchAllSportTypes(): Observable<SportType[]>{
return of([...someData]).pipe(delay(1000))
}