Javascript 将多个控制值更改分组在一起
自动完成功能,分别为每个表单控件触发筛选函数 有没有一种方法可以将这些陈述分组,而不是像我下面所做的那样,单独使用多个观察值并单独记录下来Javascript 将多个控制值更改分组在一起,javascript,angular,typescript,observable,mat-autocomplete,Javascript,Angular,Typescript,Observable,Mat Autocomplete,自动完成功能,分别为每个表单控件触发筛选函数 有没有一种方法可以将这些陈述分组,而不是像我下面所做的那样,单独使用多个观察值并单独记录下来 this.filteredTypesCodes = this.assetTypeCodeControl.valueChanges .pipe( startWith(''), map(value => value.length >= 2 ? this._filter(value) : [])
this.filteredTypesCodes = this.assetTypeCodeControl.valueChanges
.pipe(
startWith(''),
map(value => value.length >= 2 ? this._filter(value) : [])
);
this.filteredSubTypesCodes = this.assetSubTypeCodeControl.valueChanges
.pipe(
startWith(''),
map(value => value.length >= 2 ? this._filter(value) : [])
);
this.filteredMakesCodes = this.assetMakeCodeControl.valueChanges
.pipe(
startWith(''),
map(value => value.length >= 2 ? this._filter(value) : [])
);
如果使用formGroup将所有表单控件组合在一起,则可以侦听此formGroup的值更改。每次此表单组的一个表单控件更改值时,都会触发此操作 在这里检查类似的东西
如果使用formGroup将所有表单控件分组在一起,则可以侦听此formGroup的值更改。每次此表单组的一个表单控件更改值时,都会触发此操作 在这里检查类似的东西
您可以使用Rxjs的
merge
将多个观察值合并为一个,但我认为这对您不起作用,因为您需要每个观察值分别,您可以做的是,停止重复您自己,您可以将重复的代码放在单独的函数中,如下所示:
createFilter(formControl) {
return formControl.valueChanges
.pipe(
startWith(''),
map(value => value.length >= 2 ? this._filter(value) : [])
);
}
然后,您可以使用它创建过滤器:
this.filteredTypesCodes = this.createFilter(this.assetTypeCodeControl)
this.filteredSubTypesCodes = this.createFilter(this.assetSubTypeCodeControl)
this.filteredMakesCodes = this.createFilter(this.assetMakeCodeControl)
您可以从Rxjs中使用
merge
将多个观察值合并为一个,但我认为这对您不起作用,因为您需要每个观察值分别,您可以做的是,停止重复您自己,您可以将重复的代码放在单独的函数中,如下所示:
createFilter(formControl) {
return formControl.valueChanges
.pipe(
startWith(''),
map(value => value.length >= 2 ? this._filter(value) : [])
);
}
然后,您可以使用它创建过滤器:
this.filteredTypesCodes = this.createFilter(this.assetTypeCodeControl)
this.filteredSubTypesCodes = this.createFilter(this.assetSubTypeCodeControl)
this.filteredMakesCodes = this.createFilter(this.assetMakeCodeControl)