如何在不覆盖的情况下加载数据?

时间:2019-06-10 18:00:34

标签: angular ngrx-store

在我的情况下,我的页面上有出版物,并且在滚动时需要加载其他出版物。问题是,当我的新出版物到来时,我丢失了旧出版物。

我的服务:

GetPiins(page: string): Observable<ListPiinsResponse>  {
  const limit = '8';
  const piins = this.http.get<ListPiinsResponse>(
      `${this.baseUrl}/piins/FollowerAndFriend`, {
        params: {
          limit: limit, page
        }
  });
  return piins;
}

在组件的ngInit中:

this.store$.dispatch(new PiinsFeatureStoreActions.LoadCurrentUserPiins('1'));

this.piins$ = this.store$.pipe(
  select(PiinsFeatureStoreSelectors.selectAllPiinsFeatureItems),
  filter(value => value !== undefined),
);

还有检测滚动时的方法:

onScroll() {
  this.counterPage += 1;
  this.store$.dispatch(new 
  PiinsFeatureStoreActions.LoadCurrentUserPiins(
   String(this.counterPage)
  ));
}

这是在我的减速器中:

    case ActionTypes.LOAD_PIINS_SUCCESS:{
      const newPiins = featureAdapter.addAll(action.payload, {
        ...state, // I think here I need to concat this value 
        isLoading: false,
        error: null
      });

      return newPiins;
    }

1 个答案:

答案 0 :(得分:0)

只需合并两个数组

this.oldData= [ ...oldData, ...newData];

这意味着您的oldData最初必须是一个空数组。

public oldArray:SomeInterface[] = [];

应该做到这一点