Почему эта функция Angular 6 onclick не работает должным образом? - PullRequest
0 голосов
/ 03 сентября 2018

Итак, я создал быстрое приложение Angular 6, чтобы помочь оценить суммы счета с учетом начальной и конечной даты периода, для которого пользователь хочет рассчитать. (например, 1 и 5 вернули бы общее количество счетов с 1-го по 5-е).

В любом случае, у меня при нажатии кнопки запускается следующая функция (this.bills $ - это данные json, которые я использую), но она не работает, когда я ввожу startDay выше, чем endDay.

  estimateBills() {
    this.estimateText = 0;


    console.log('00: startDay is: ' + this.startDay + ' and, endDay is: ' + this.endDay);


    if (this.startDay < this.endDay) {
      console.log('1: startDay is: ' + this.startDay + ' and, endDay is: ' + this.endDay);
      for (var i = 0; i < this.bills$.length; i++) {
        if (this.startDay <= this.bills$[i].DueDate && this.endDay >= this.bills$[i].DueDate) {
          console.log('Bill DueDate is: ' + this.bills$[i].DueDate + ' and Amount is ' + this.bills$[i].Amount);
          this.estimateText = +this.estimateText + this.bills$[i].Amount;
        }
      }
    }
    else if (this.startDay > this.endDay) {
      console.log('2: startDay is: ' + this.startDay + ' and, endDay is: ' + this.endDay);
      for (var i = 0; i < this.bills$.length; i++) {
        console.log('looping');
        if (this.startDay <= this.bills$[i].DueDate || this.endDay >= this.bills$[i].DueDate) {
          console.log('Bill DueDate is: ' + this.bills$[i].DueDate + ' and Amount is ' + this.bills$[i].Amount);
          this.estimateText = +this.estimateText + this.bills$[i].Amount;
        }
      }
    }
    else {
      this.estimateText = 1;
    }


  }

Вот несколько примеров того, что я получаю, когда запускаю функцию. По какой-то причине он не понимает, что startDay выше, чем endDay! ИДК, что идет не так

Когда startDay меньше, чем endDay (правильный вывод)

Когда endDay меньше, чем startDay (неправильный вывод)

1 Ответ

0 голосов
/ 03 сентября 2018

Скорее всего, причина в том, что и this.startDay, и this.endDay являются строками, поэтому "28" < "4" сравнение равно true (в этом случае сравниваются первые символы "2" и "4").

Здесь может помочь явное приведение к числам, т. Е. Number(this.startDay) < Number(this.endDay).

...