我为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 ,这个项目会运行。
答案 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]后续发射打开,其中每个发射都是行数组。
发布完整的代码示例以获得进一步的指导。