【问题标题】:angular 2 - Property 'skipLast' does not exist on type 'Observable<number>'角度 2 - 类型 'Observable<number>' 上不存在属性 'skipLast'
【发布时间】:2017-05-29 18:07:49
【问题描述】:

我在 Angular 2 组件中使用 Behavior Subject 并且我希望在最后一个之前发出第二个值,RxJs document 说我应该在我的流上使用 skipLast 方法来忽略它们,但是我在使用它时遇到错误说:

“可观察”类型上不存在属性“skipLast”

角度版本:2.3.1 Rx.js 版本:5.0.3

这是我的代码:

import 'rxjs'
import { BehaviorSubject } from 'rxjs/BehaviorSubject'

@Component({
  ...
})

export class FilesComponent {
  folderId: BehaviorSubject<number> = new BehaviorSubject(0)

  constructor() {
    this.folderId.skipLast(2).subscribe(
      value => { console.log(value) }
    )
  }    

  clickHandler(fileId: number): void {
      this.folderId.next(fileId)
  }

}

【问题讨论】:

  • 你从哪里得知应该有一个skipLast 运算符?
  • @GünterZöchbauer 正如我已经说过的,我是从 rx 文档中读到的。尽管 Rx 5 中不再提供此功能,您能否建议一种方法来实现此功能?
  • 抱歉,不知道。我觉得这很奇怪,它完全被支持。在可观察对象完成之前,您如何知道事件是倒数第三个事件。我认为这意味着在新的事件到来之前保留 2 个事件,因此在 observable 完成之前,您将始终有 2 个未完成的事件。那有什么用例?
  • 我正在编写一个文件管理器,每个目录都有一个 id,所以导航应该使用该 id 来实现,以防更深入目录没有问题,但是当实现后退按钮时,这成为问题(我需要祖父 id 在树中向上导航一级)我认为一个好的解决方案是使用数组并缓存用户导航的目录 id,然后单击返回删除最后两个 id 并获取具有数组中最后一项的 id 的文件但我认为我可以使用流来实现它会非常好。
  • 我明白了,但不知道。

标签: angular rxjs rxjs5


【解决方案1】:

现在将跳过最后一个运算符添加到 RxJS 5 https://github.com/ReactiveX/rxjs/pull/2316

【讨论】:

    【解决方案2】:

    添加

    罢工>

    import 'rxjs/add/operator/skipLast'
    

    其实没有skipLast操作符。

    https://github.com/ReactiveX/rxjs/blob/eb462bf8836d1bc27db5d11a9ea7cb4fa4b90f19/MIGRATION.md

    skipLast |不再实施

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 2017-12-22
      • 2018-02-01
      • 2022-11-28
      相关资源
      最近更新 更多