Группировка нескольких изменений управляющих значений

функция автозаполнения для запуска функции фильтра для каждого элемента управления формы соответственно.

Есть ли способ сгруппировать утверждения вместо того, чтобы по отдельности использовать несколько наблюдаемых и записывать их отдельно, как я сделал ниже?

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

person Community    schedule 11.12.2020    source источник


Ответы (2)


У вас есть merge от Rxjs для объединения нескольких наблюдаемых в один, но я не думаю, что это сработает для вас, потому что вам нужен каждый наблюдаемый отдельно, что вы можете сделать вместо этого, чтобы перестать повторяться, вы можете поместить повторяющийся код в отдельная функция, например:

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)
person Elmehdi    schedule 11.12.2020

Если вы используете formGroup для группировки всех элементов управления формы вместе, вы можете прослушивать изменения значений этой formGroup. Это будет срабатывать каждый раз, когда один элемент управления формы этой группы форм изменяет значение.

Проверьте что-то подобное здесь Angular Subscribe valuechanges in formarray в группе форм

person Boug    schedule 11.12.2020