Как отфильтровать объект, используя опцию выбора - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть объект с некоторыми значениями перечисления в коде. И когда я пытаюсь отфильтровать его, используя опцию выбора. Вот фрагмент:

export enum BranchRegion {
  A = "A",
  B = "B",
  C = "C",
  R = "R"
}

И мой файл TS:

branchRegion = Object.keys(BranchRegion);

И html:

<select
  class="form-control"
  name="region"
  formControlName="region"
  id="field_region"
  [class.is-invalid]="
    branchForm.get('region').invalid &&
    (branchForm.get('region').dirty ||
      branchForm.get('region').touched)
  "
  (change)="filterLocations($event.target.value)"
>
  <option *ngFor="let item of branchRegion" [value]="item">{{
    branchRegionLabel[item]
  }}</option>
</select>

И функция:

 filterLocations(value: any) {
    Object.keys(this.branchRegion).every(value);
    console.log(this.branchRegion);
  }

И результат:

enter image description here

Что я делаю не так? Любой совет?

Ответы [ 3 ]

0 голосов
/ 06 февраля 2020

Исключение, которое вы получаете из этой строки:

Object.keys(this.branchRegion).every(value);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every Array.every - Метод every () проверяет, все ли элементы в массиве пройти тест, реализованный предоставленной функцией. Возвращает логическое значение.

Вы не предоставляете функцию каждому.

0 голосов
/ 06 февраля 2020

Это ваша проблема:

Object.keys(this.branchRegion).every(value);

Каждый ожидает функцию обратного вызова, и вы дали ей значение. Если вы хотите фильтровать только выбранные элементы, используйте метод фильтрации:

Object.keys(this.branchRegion).filter(v => v === value);
0 голосов
/ 06 февраля 2020

Немного трудно понять, что вы пытаетесь сделать в методе filterLocations. this.branchRegion - это уже массив. Таким образом, Object.keys() немного выше :). Может быть, вы хотите сделать что-то подобное? Выполнение Object.keys над исходным объектом гарантирует, что вы не будете фильтровать фильтруемый массив

filterLocations(value: any) {
  this.branchRegion = Object.keys(BranchRegion).filter((region) => region === value)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...