带有FormControl valueChanges事件的CombineLatest事件绑定未发出

时间:2018-09-05 09:24:57

标签: angular typescript rxjs subscribe

我通过2个[formControl]“ toppings”:array和“ toppings2”:array收听2种表单。

我必须同时具有表单的2个值。所以我将我的两个观测值与“ CombineLatest”结合在一起

我的代码:

ngOnInit() {
combineLatest(this.toppings.valueChanges, this.toppings2.valueChanges)
    .subscribe(val => console.log(val)) 
}

但是现在,在初始化组件时,只有一种形式发送console.log(val)。

如果我单击此表单,则在收到第二个表单的日志后。你遇到这个问题了吗?

1 个答案:

答案 0 :(得分:11)

您可能希望两个Observable都有一个初始值。 combineLatest仅在所有Observables都发出了至少一个值时才发出。使用startWith运算符创建此行为,如下所示:

combineLatest(
    this.toppings.valueChanges.pipe(startWith("")), 
    this.toppings2.valueChanges.pipe(startWith("")))

或者,如果您有可用的初始值,如建议的那样:

combineLatest(
    this.toppings.valueChanges.pipe(startWith(this.toppings.value)), 
    this.toppings2.valueChanges.pipe(startWith(this.toppings2.value)))

注意,它将以初始值发出一次。要抑制此行为,可以使用skip(1)运算符忽略此初始通知。