Ag-grid текстовый фильтр для фильтрации по всему массиву строк - PullRequest
0 голосов
/ 28 ноября 2018
  • Я использую выбор углового материала с несколькими вариантами.
  • Каждый раз, когда опция выбрана или не выбрана, я вызываю опцию, чтобы отфильтровать данные в таблице и показать только те строки, которые выбраны.

Это коддля выбора циновки.

<mat-form-field>
<mat-select placeholder="RequestID" id = "filter-check-box" multiple>
    <mat-option (onSelectionChange) = "RequestIDCheckboxFilter($event, RequestID)" 
 *ngFor="let RequestID of RequestIDArray" [value]="RequestID">{{RequestID}}</mat-option>
</mat-select>

  • Это определение RequestIDArray: RequestIDArray: string[] = ['REQ001', 'REQ002', 'REQ003', 'REQ004'];

И это определениеФункция RequestIDCheckboxFilter.ReqIDFilter - это массив, в котором я храню значения, которые проверены в настоящее время.:

RequestIDCheckboxFilter(event, text: string) {
  var CheckboxFilterComponent = this.gridApi.getFilterInstance("requestID");
  if(event.isUserInput) {
    var index = this.ReqIDFilter.indexOf(text);
    if(index == -1) {
      this.ReqIDFilter.push(text);
    } 
    else {
      this.ReqIDFilter.splice(index, 1);
    }
  }

  for(var i = 0; i < this.ReqIDFilter.length; i++) {
    CheckboxFilterComponent.setModel({
      type: "equals",
      filter: this.ReqIDFilter[i]
    })
  }

  this.gridApi.onFilterChanged();
}

Когда я это делаю, я вижу только одну из строк, даже если выбрано несколько опций.Скажем, если выбраны REQ001 и REQ002, видна только строка с REQ001.Я также пытался использовать цикл for внутри setModel, но это дает ошибку.Можно ли как-нибудь отфильтровать таблицу по всем значениям в массиве?

Редактировать: я использую версию ag-grid для сообщества.

1 Ответ

0 голосов
/ 28 ноября 2018

Я думаю, что это невозможно с text filter.В вашем цикле вы перезаписываете модель фильтра при каждой итерации.

См. Также модель ag-grid gridApi.setFilterModel () с несколькими условиями [angular6]

Корпоративная версияимеет что-то под названием Set Filter, что делает то, что вы хотите.

Итак, я вижу следующие варианты

  • купить корпоративную версию (что довольно дорого)
  • попробуйте создать пользовательский фильтр
  • фильтровать источник данных вашей сетки, а не сетку напрямую.

РЕДАКТИРОВАТЬ: доступна пробная версия корпоративной версии, так что вы можетеМожно проверить, является ли установленный фильтр подходящим инструментом для ваших нужд.

Возможно Есть ли в ag-grid API для фильтрации нескольких значений флажков? помогает?

...