Я новичок в RxJs
и NgRx store
, я хочу создать @Effect
с комбинацией двух наблюдаемых (очень сложно объяснить):
Мои интерфейсы выглядят так:
export interface ProductDetails {
product: Product;
productBody: ProductBody;
}
export interface ProductBody{
id: string;
body: string;
}
Я пытаюсь создать новый объектproductDetails
и установить его свойства. свойства: product
, который payload
имеет product
и productBody
, который получает его от productService(id)
(возвращает observable<productBody>
)
Этот эффект должен вернуть observable<productDetails>
@Effect()
getProductDetails$ = this.actions$
.ofType(ProductActions.GET_STEP)
.map(action => action.payload)
.flatMap(s => {
let body;
this.productService.getStepBody(s.id).subscribe(x => body = x);
return Observable.of({
step: s,
productBody: body
});
})
.map(res => this.productActions.getProductDetailsSuccess(res));
это возвращает: Object {productBody: undefined, product: Object}
Я понимаю, почему возвращается undefined
для productBody
, но не знаю, как это исправить. Я пробовал использовать zip
, switchMap
и т. Д., Но безуспешно!