Angular2 RxJS Pagination追加vs切片

时间:2016-06-03 12:51:44

标签: javascript angular rxjs

我为Angular2建立datatable project。我想使用rxjs对行进行分页,但是当我将其分页时,会附加'对行而不是切片。

我这样做:

get paginated() {
    let { first, last } = this.indexes;
    return this.rows
      .skip(first)
      .take(last)
      .toArray();
  }

Reference: src/services/State.ts#L62

和Angular2循环就像:

<datatable-body-row
  *ngFor="let row of state.paginated | async"
  [row]="row"
  [state]="state">
</datatable-body-row>

Reference: src/components/body/Body.ts#L18

获取行数据并inserted here

这对RX来说是一个坏用例还是我做错了什么?我找到了一个类似的示例here,但似乎无法使用我的示例。

旁注:如果你克隆并且npm install / npm start ,这个项目会运行。

1 个答案:

答案 0 :(得分:0)

看起来你正在使用行,就好像它是一个可观察的数组,但你在数组流上应用skip / take操作符,而不是流上的数组。第一个/最后一个可能是索引,而take运算符接受多个行。建议:

1)将this.rows重命名为this.rows $如果它确实是行数组的流,即像Observable<Row[]>那样的smt。

2)paginated方法应该返回一个可观察的数组,按skip / take或slice切片:

return this.rows$
  .map(rows => rows.slice(first, last))

注意,如果您在流上应用skip / take运算符,则实际上正在等待[SKIP]发射,并且只保持流为[TAKE]后续发射打开,其中每个发射都是行数组。

发布完整的代码示例以获得进一步的指导。