【问题标题】:How should I convert merge used in pipe in v5 to v6我应该如何将 v5 中管道中使用的合并转换为 v6
【发布时间】:2019-08-30 09:35:20
【问题描述】:

我正在查看可用的转换指南here,并且我正在尝试按照本指南转换管道中使用的合并,但它不像更改之前那样工作。

这是我用来学习新合并的一段代码:

    this.form.valueChanges.pipe(
      startWith(1),
      merge(this.form.statusChanges),
      merge(this.click$),
      map(() => this.form.value.query),
      filter(() => this.form.valid)
    )
    .subscribe(this.search);
  private search = (query: string) => {
    this.tvs.search(query).subscribe(shows => this.shows = shows);
  }

我尝试过这样做:

    merge(
    this.form.valueChanges.pipe(
    startWith(1),
      map(() => this.form.value.query),
      debounceTime(500),
      tap(() => this.form.controls.query.errors && console.log(this.form.controls.query.errors)),
      tap(() => this.form.status && console.log(this.form.status)),
      filter(() => this.form.valid)
    ), this.form.statusChanges, this.click$)
    .subscribe(this.search);

但在 chrome 的网络选项卡中,我收到了对 api 的调用,其查询等于表单的状态(有效或无效)。转换它的正确方法是什么?

【问题讨论】:

    标签: angular typescript rxjs5 rxjs6 rxjs-pipeable-operators


    【解决方案1】:

    我找到了解决方案:

     merge(
          this.form.valueChanges,
          this.form.statusChanges,
          this.click$).pipe(
            startWith(1),
            map(() => this.form.value.query),
            debounceTime(500),
            tap(() => this.form.controls.query.errors && console.log(this.form.controls.query.errors)),
            tap(() => this.form.status && console.log(this.form.status)),
            filter(() => this.form.valid)
          ).subscribe(this.search);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 2015-10-23
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多