Вставка комбинации элементов в одном списке массивов в другой список массивов с помощью угловых 4 - PullRequest
0 голосов
/ 30 октября 2018

У меня есть arrayList (selectedSources) с такими элементами:

this.selectedSources.push(
  { id: 0, text: "A" },
  { id: 1, text: "B" },
  { id: 2, text: "C" },
  { id: 3, text: "D"}
); 

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

В данный момент я делаю это с if/else заявлениями. Есть ли способ сделать это динамически?

ниже мой код:

  if (
    this.selectedSources.some(x => x.Value === "B") &&
    this.selectedSources.some(x => x.Value === "C")
  ) {
    if (this.formulalist != undefined) {
      //this.formulalist.length = 0;
      this.formulalist = [];
    }
    this.formulalist.push({
      Value: "B - C",
      Name: "B - C",
      IsVisible: true,
      UpdateFlag: "A",
      Market: "",
      FormulaType: "diff",
      FormulaSet1: "1",
      FormulaSet2: "3",
      checked: null
    });
    this.formulalist.push({
      Value: "% B - C",
      Name: "% B - C",
      IsVisible: true,
      UpdateFlag: "A",
      Market: "",
      FormulaType: "percent",
      FormulaSet1: "1",
      FormulaSet2: "3",
      checked: null
    });
   else if (
    this.selectedSources.some(x => x.Value === "B") &&
    this.selectedSources.some(x => x.Value === "D")
  ) {
    if (this.formulalist != undefined) {
      //this.formulalist.length = 0;
      this.formulalist = [];
    }
    this.formulalist.push({
      Value: "B - D",
      Name: "B - D",
      IsVisible: true,
      UpdateFlag: "A",
      Market: "",
      FormulaType: "percent",
      FormulaSet1: "1",
      FormulaSet2: "4",
      checked: null
    });
    this.formulalist.push({
      Value: "% B - D",
      Name: "% B - D",
      IsVisible: true,
      UpdateFlag: "A",
      Market: "",
      FormulaType: "percent",
      FormulaSet1: "1",
      FormulaSet2: "4",
      checked: null
    });
    ............
    ............

Если пользователь выбирает B и C, тогда мне нужно нажать комбинацию этих пунктов. Например: (B - C) и % B - C.

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

selectedSources имеет выбранный пользователем список.

, если пользователь выбирает B,A,C, мне нужно отправить эти элементы в другой список массивов. A - C, % A - C, A - B, % A - B, B - C, % B - C

1 Ответ

0 голосов
/ 30 октября 2018

Я сделал здесь пример для вас. Надеюсь, это поможет: https://stackblitz.com/edit/angular-ayh1yc

Есть 4 флажка, как на этом изображении
enter image description here

и вот результат: enter image description here

...