我有一个带有多个输入字段的表单(例如:CID,姓氏,名字等)。要求是在表单提交上提供一个输入。因此,在任何输入字段中输入输入后,除输入字段外的其他值都需要清除
我打算不为所有控件订阅值更改,而是计划在Rxjs中使用一些运算符来组合它,并仅使用一个订阅。我发现的是CombineLatest。因此,我只是将所有控件推送到一个数组中,并计划传递给CombineLatest运算符。
我创建了一个堆叠闪电战。 https://stackblitz.com/edit/angular-xeqms6?file=src%2Fapp%2Fapp.component.ts
handleFormChanges(){
const controlArr=[];
for (const field in this.formControls) {
controlArr.push(this.formEl.get(field).valueChanges);
}
combineLatest(controlArr)
.pipe(map(control=>{
startWith('')
return control;
}))
.subscribe((value)=>{
// Here I need to write the logic to clear input fields other than the current one.
console.log(value);
})
}
上述代码的问题是,只有在所有字段中至少输入一次值之后,才首先触发订阅。随后的触发器按预期工作。
我需要的是在每个valuechanges上都需要调用订阅回调