Проверка, является ли строка нулевой или неопределенной, всегда возвращает False - PullRequest
1 голос
/ 10 апреля 2020

Я использую следующий код, чтобы проверить, является ли строка нулевой или определенной. Но даже если строка имеет значение, она возвращает false.

  filename: string;

  validate(): boolean {
        if (this.filename) {
            this.error = true;
            this.message = "Please enter valid filename";
            return false
        }
        }

Обновление

Это как связать значение

<input name="filename" id="filename" pr_ngcontent-oci-c5="" aria-label="filename" class="form-control" placeholder="File Name" type="text" [(ngModel)]="filename">

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

enter image description here

enter image description here

1 Ответ

1 голос
/ 10 апреля 2020

Редактировать:

Как упомянул Аймен ТАГЛИССИЯ в комментариях, FormControl может быть более элегантным способом реализации формы и ее проверки. Вот Введение в формы в Angular, а также пример использования Реактивные формы .

Оригинальный ответ:

Перепишите свою функцию следующим образом: !this.filename:

function validate(): boolean {

  if (!this.filename) {
    this.error = true;
    this.message = "Please enter valid filename";
    return false;
  }

  return true;
}

console.log(validate(null)); // false
console.log(validate(undefined)); // false
console.log(validate('')); // false
console.log(validate('valid')); // true

Хотя вы также можете подумать о передаче строки в качестве параметра:

function validate(str: string): boolean {

  // Reset error and message?
  // ...      

  if (!str) {
    this.error = true;
    this.message = "Please enter non empty string";
    return false;
  }

  // Or reset error and message here
  // this.error = false;
  // this.message = undefined;

  return true;
}

А затем что-то вроде:

if (!validate(this.filename)) {
  // Valid filename
} else {
  // Error
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...