Я разрабатываю приложение под углом 8, используя ngrx (store, эффекты, объекты, storedevtools).Я также открываю ngrx.Я следовал инструкциям из официального документа, и все было в порядке, пока я не решил оптимизировать http-запросы моего приложения.
Я хочу проверить эффект в магазине, если сущности уже загружены, а если нет, связаться с моим сервисом.
Я гуглил и нашел этот пример, вдохновленный им, но у меня естьПроблема https://medium.com/@haldun7/caching-http-requests-while-using-ngrx-effects-98abd50c5c78
Моя проблема из браузера консоли:
ОШИБКА TypeError: «Вы указали« неопределенный », где ожидался поток. Вы можете предоставить Observable, Promise,Array или Iterable. "
Эффект, возникающий при возникновении проблемы:
@Effect()
loadAllCountries$ = this.actions$.pipe(
ofType(fromActions.CountryActionTypes.LOAD_ALL_COUNTRIES),
withLatestFrom(this.store.pipe(select(fromReducers.selectAllCountries))),
switchMap((list) => { // <= this guy is a [never, Country[]] object and I don't know why :(
if (list[1].length !== 0) {
var temp = list[1];
return [new fromActions.LoadCountriesSuccess( {countries: temp })];
}
this.service.getCountries().pipe(
map(data => new fromActions.LoadCountriesSuccess({ countries: data })))
})
);
Это довольно странно, поскольку при пошаговой отладке list [1] равен 0так что остальная часть должна быть выполнена без проблем.
Это неоптимизированная версия Эффекта, которая отлично работает
@Effect()
loadAllCountries$: Observable<Action> = this.actions$.pipe(
ofType(fromActions.CountryActionTypes.LOAD_ALL_COUNTRIES),
switchMap(() =>
this.service.getCountries().pipe(
map(data => new fromActions.LoadCountriesSuccess({ countries: data }))
)));
В основном у меня есть 2 вопроса:
- Кто-нибудь знает, в чем мой код ошибки?
- Знаете ли вы, почему withLatestFrom возвращает [никогда, Страна []], я думаю, что наблюдаемое должно быть более полезным.
Я могу предоставить другую часть кода (редукторы, действия...) если нужно, но это очень близко к этому примеру, я также учил ngrx: https://www.concretepage.com/angular-2/ngrx/ngrx-entity-example
Большое спасибо за вашу помощь:)