Angular - 如何将多个"valueChanges"可观察量组合成一个

Mic*_*lis 5 observable rxjs angular

如何将以下订阅合并为一个?

    this.form.get("type").valueChanges.subscribe(() => {
        this.calcFinalTransports();
    })
    this.form.get("departure").valueChanges.subscribe(() => {
        this.calcFinalTransports();
    })
    this.form.get("destination").valueChanges.subscribe(() => {
        this.calcFinalTransports();
    })
    this.form.get("stations").valueChanges.subscribe(() => {
        this.calcFinalTransports();
    })
Run Code Online (Sandbox Code Playgroud)

Max*_*kyi 8

您有几个选择,具体取决于您期望的输出.您可能想阅读这篇文章:

如果您只是想在任何值更改使用时收到通知merge:

import {merge} from "rxjs/observable/merge";

merge(
    this.form.get("type").valueChanges,
    this.form.get("departure").valueChanges,
    this.form.get("destination").valueChanges
    this.form.get("stations").valueChanges
).subscribe(() => this.calcFinalTransports());
Run Code Online (Sandbox Code Playgroud)

  • 如果我使用管道合并到初始 observable 上,似乎可以工作:`first$.pipe(merge(second$,third$,...).subscribe(...);` (2认同)