Angular 2 - если условие становится истинным для всех значений - PullRequest
0 голосов
/ 16 мая 2018

Я застрял в точке, мое if условие возвращается true для всех условий, я проверяю, больше или нет значение.

Код:

 hideAmountModal() {
    var self = this;
    self.home_delivery_charge = self.storeService.fetchHomedeliveryData(self.shopId);
    self.home_delivery_charge.subscribe((res: any) => {
      for (var i = 0; i < res.length; i++) {
        if (self.deliveryData.delivery_charge > res[i].amount) {
          self.check_delivery_charge = true;
          console.log('Deliverycharge',self.deliveryData.delivery_charge,'result',res[i].amount);
          console.log('deliver charge is greater',self.check_delivery_charge);
        }
        else if (self.deliveryData.delivery_charge < res[i].amount){
            self.check_delivery_charge = false;
        }
      }
    })
    self.DeliveryChargeValue = true
    self.selectAmountModal.hide();
  } 

Из консоли я получаю следующее:

enter image description here

Где я ошибся?

Ответы [ 4 ]

0 голосов
/ 16 мая 2018

Измените ваше if условие с:

if (self.deliveryData.delivery_charge > res[i].amount)

К этому:

if (Number(self.deliveryData.delivery_charge) > Number(res[i].amount))         

Делая это, вы будете явно type-casting свой тип ввода в число.

Помните: Вы получите NaN (не число), если ваш ввод не может быть преобразован в тип числа.

В случае, если вам не нужно это поведение, вы всегда можете использовать parseInt, который использует скрытую функцию Number() Javascript, как показано здесь .

0 голосов
/ 16 мая 2018

Попробуйте преобразовать оба значения в тип числа

if (parseInt(self.deliveryData.delivery_charge) > parseInt(res[i].amount)) {
}
0 голосов
/ 16 мая 2018

Вы console.log только значение, когда верно

Попробуйте добавить console.log здесь:

else if(self.deliveryData.delivery_charge < res[i].amount) {
  self.check_delivery_charge = false;
}
0 голосов
/ 16 мая 2018

Будьте осторожны, потому что вы не обрабатываете дело equal, которое вы должны включить в else if. Можете ли вы проверить, что сравниваемые значения являются числами? Это, вероятно, проблема.

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