我有一个输入按钮,在onChange中,我调用一个函数。在这个函数中,我检查valueChanges。不知何故,在输入值后的第一个选项卡上没有触发对valueChanges的订阅。
下面是一些代码片段:超文本:
<input type="text" formControlName='{{subControl.name}}'
(change)="fetchData(subControl.name,
true)"/>
TS:
public fetchData(formControlName: string, fetchData: boolean): void {
if (this.primaryControls.indexOf(formControlName) !== -1 &&
fetchData) {
this.uiForm.get(formControlName)?.valueChanges **//fine till here. Gets executed**
.pipe(
debounceTime(1000)
)
.subscribe(data => { **// This subscribe is not firing**
if (!this.uiForm.dirty) {
return;
}
//do some stuff here
}});
2条答案
按热度按时间jdzmm42g1#
每次更改输入时,都在创建新的订阅。最初没有任何React,因为还不存在订阅。
只需在init中订阅
valueChanges
一次,如果有多个,则使用循环。我假设
subControl
是一个组件属性,这可能不是真的,但我相信你明白我的意思。kgsdhlau2#
您可以在管道中使用带有一些初始值的startWith()来第一次触发订阅。
也可以选择在管道中包含distinctUntilChanged()。