#angular #rxjs #ngrx
#angular #rxjs #ngrx
Вопрос:
У меня небольшой эффект, и мне нужно получить данные действия (nanoId), и мне нужно выбрать данные с этим nanoId в хранилище:
@Effect()
syncObj$ = this.actions$.pipe(
ofType(ObjActions.Actions.SYNC_NEW_OBJ),
mergeMap(({nanoId, obj}) => {
this.store.pipe(select(getObjByNanoId(nanoId), first())).subscribe(eObj => {
// return [] <-- error if I try to return pipe result here and remove return below
})
return [] // <-- this is below return
}
)
);
Я подумал withLatestFrom()
, но, как я понимаю, для этого нужен дополнительный канал.
Моя цель — перехватить объект и наноид из действия, затем выбрать объект с nanoId в хранилище (eOnj) и сравнить некоторые из его полей. Спасибо!
Ответ №1:
Обратите внимание, вам не нужно подписываться внутри withLatestFrom
, поскольку для этого требуется наблюдаемый.
@Effect()
syncObj$ = this.actions$.pipe(
ofType(ObjActions.Actions.SYNC_NEW_OBJ),
mergeMap(action => {
return of(action).pipe(
withLatestFrom(
this.store.pipe(select(getObjByNanoId(nanoId)),
)
)
}),
mergeMap(([action, obj]) => {
// code here
})
);
Комментарии:
1. @Dmitry Добро пожаловать, рад помочь