TypeScript - проверка числа больше или меньше, если ответ имеет одинаковую «длину» - PullRequest
0 голосов
/ 22 мая 2018

В настоящее время работает над проверкой номера.У меня есть 2 входа, и одно число не может быть больше другого, а другое не может быть меньше первого.Со стрелками в поле ввода это прекрасно работает, но пользователь может вручную ввести недопустимые числа, и моя цель состоит в том, чтобы вернуть это число к действительному числу.

Так, например, от не может быть больше, чем до,если я добавлю 'к' 6 и 'из' 8, номер 'из' вернется к действительному числу, равному 6. Но если я добавлю другое число к 'из', то 'к' будет равно 6, а 'из' - это '85 ', ничего не изменится, он зарегистрирует изменения, но не вернет их к действительному номеру.

Если числа имеют одинаковую «длину», как 60 и 80, 500 и 952, то это будет работатьправильно.Но когда это как 5 и 80, или 20 и 965, тогда проверка не удастся.

Вот мой HTML и TS

numberFrom: number;
  numberTo: number;

  ngOnNumberChange(event) {
    let to = this.numberTo;
    let from = this.numberFrom;

    if (from < 0) {
      this.numberFrom = from = 0;
    } else if (to < 0) {
      this.numberTo = to = 0;
    }
    if (this.numberFrom > this.numberTo) {
      this.numberFrom = this.numberTo
    }

    if (this.numberTo < this.numberFrom) {
      this.numberTo = this.numberFrom;
    }

  }
<input [(ngModel)]="numberFrom" (ngModelChange)="ngOnNumberChange($event)" type="number" [max]="numberTo" [min]="0" [placeholder]="'From'">

<input [min]="numberFrom || 0" [(ngModel)]="numberTo" (ngModelChange)="ngOnNumberChange($event)" type="number" [placeholder]="'To'">

Вот это в StackBlitz. введите описание ссылки здесь

1 Ответ

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

Значение ввода всегда является строкой, вам нужно сначала преобразовать его в число перед выполнением проверок.

Вы можете сделать это, используя parseInt или +:

let to = parseInt(this.numberTo, 10);
let from = parseInt(this.numberFrom, 10);
// OR
let to = +this.numberTo;
let from = +this.numberFrom;
...