1

自动完成功能,分别为每个表单控件触发过滤器功能。

有没有办法对语句进行分组,而不是像下面那样单独使用多个可观察对象并分别写下来?

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) : [])
      );
4

1 回答 1

0

您可以merge从 Rxjs 将多个 observable 合并为一个,但我认为这对您不起作用,因为您需要单独的每个 observable,您可以做些什么来停止重复自己,您可以将重复的代码放在一个单独的函数,像这样:

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)
于 2020-12-11T10:47:38.417 回答