如何从ngrx商店获取价值

时间:2019-06-14 12:17:47

标签: angular ngrx

我有一个8号角项目,我正在使用ngrx将对象数组存储在状态存储中。我设法做到了,但是现在,我想使用状态存储中的数据对服务器创建post request

this.dataService.postData(this.store.pipe(select('dataStore')));

那是我正在尝试的代码,它无法正常工作。 谢谢

3 个答案:

答案 0 :(得分:2)

好像您正在尝试产生副作用。为此,您应该在组件/服务中执行以下操作-

this.store.pipe(select('dataStore'), 
                take(1)
                switchMap((data) => {
                  return this.dataService.postData(data);
                }
               ).subscribe(responseOfDataService => {
                  //do whatever you want to do with the response
                  console.log(responseOfDataService);
               });

顺便说一句-要处理副作用,您应该尝试ngrx效果-https://ngrx.io/guide/effects

答案 1 :(得分:1)

尝试以下

import { createFeatureSelector } from '@ngrx/store';

const dataSelector = createFeatureSelector('dataStore');

this.store.select(dataSelector).subscribe(
   (data) => {
     this.dataService.postData(data)
   }
);

答案 2 :(得分:1)

最简单的答案

this.store.pipe(select('dataStore'), take(1)).subscribe((data) => {

this.dataService.postData(data).subscribe();

});