функция параметризации angular химических веществ - PullRequest
0 голосов
/ 05 марта 2020

У меня есть эти 2 функции, и я хочу сделать параметризованную функцию с химическим вводом, подобным этому

 clearCancerDropdown() {
        this.cancerDropdown.clear();
      }

      clearReproductiveDropdown() {
        this.reproductiveDropdown.clear();
      }

, и я хочу сделать параметризованную функцию с химическим вводом, подобным этому

 clearDropdown(chemical) {
        switch (chemical) {
          case cancer:
            this.cancerDropdown.clear();
            break;

     case cancer:
             this.reproductiveDropdown.clear();
            break;

          default:
            break;
        }
}


  clearCancerDropdown() {
    this.cancerDropdown.clear();
  }

  clearReproductiveDropdown() {
    this.reproductiveDropdown.clear();

проблема в том, что химическое вещество отправляется следующим образом

this.checkChemical(this.itemFlags.cancer);

, а интерфейс itemFlag выглядит следующим образом

export interface ItemFlags {
    exempt: boolean;
    cancer: boolean;
    reproductive: boolean;
}

, что мой код делает прямо сейчас - проверяет, является ли логическое значение == рак и не правильно Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 05 марта 2020

У вас есть 2 варианта:

Вариант 1:

Используйте простые операторы if-else для проверки типа itemFlag.

checkChemical(itemFlags: ItemFlags) {
  if (itemFlags.cancer) {
    // Logic for Cancer case
  } else if (itemFlags.reproductive) {
    // Logic for Reproductive case
  } else if (itemFlags.exempt) {
    // Logic for Exempt case
  }
}

Метод вызывающей стороны должен передать весь объект itemFlags, как показано ниже:

// Perform your logic for initalizaing itemFLags
this.itemFlags = { cancer: true; reproductive: false; exempt: false };
// Pass the entire object to the method
this.checkChemical(this.itemFlags);

Вариант 2:

Если вы не большой поклонник if-else операторов, вы можете использовать switch операторов, но для этого вы должны изменить свой интерфейс на enum.

item-flags.model.ts

export enum ItemFlags {
  CANCER = 'cancer',
  REPRODUCTIVE = 'reproductive',
  EXEMPT = 'exempt'
}

Компонент / Сервисный файл:

checkChemical(itemFlags: ItemFlags) {
  switch(itemFlags) {
    case ItemFlags.CANCER:
      // Logic for Cancer case
      break;
    case ItemFlags.REPRODUCTIVE:
      // Logic for Reproductive case
      break;
    case ItemFlags.EXEMPT:
      // Logic for Exempt case
      break;
    default:
      // Default case
  }
}

Теперь в методе вызывающей стороны вызовите метод checkChemical, как показано ниже:

// CANCER case
this.checkChemical(ItemFlags.CANCER);
// REPRODUCTIVE case
this.checkChemical(ItemFlags.REPRODUCTIVE);
// EXEMPT case
this.checkChemical(ItemFlags.EXEMPT);

Убедитесь, что импортировали перечисление ItemFlags, если это в другом файле.

0 голосов
/ 05 марта 2020

Передайте itemFlag, а затем проверьте, если itemFlag.cancer или itemFlag.reproductive вместо переключателя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...