Использование регулярных выражений для замены символов в строке в шаблоне Angular - PullRequest
0 голосов
/ 24 апреля 2020

Я знаю, что обычно могу использовать myString.replace(/\*/g, '') для удаления * из строки. Но я не могу заставить это работать в шаблоне Angular HTML. Вот что я делаю ...

<div class="panel panel--raised">
  <div class="row">
    <div class="form-group col-md-6">
      <div class="form-group__text">
        <input type="text" placeholder="Search... (min of 3 characters)" [(ngModel)]="searchString" minlength="3">
      </div>
    </div>
    <div class="col-md-6">
      <button class="btn btn--success btn--small host-info-button"
              [disabled]="searchString.replace(/\*/g, '').length < 3"
              (click)="getInfo(searchString)">Search</button>
    </div>
  </div>
</div>

Parser Error: Unexpected token / ...

Что я здесь не так делаю?

Обновление:

Кто я попытка сделать это - заставить пользователя ввести как минимум 3 символа, которые не являются символами подстановки (*). Так что a** будет считаться только как 1 символ, а *** будет считаться как ноль символов, а *xyz* будет считаться как 3 символа. Я не уверен, что Validator.pattern() сможет это сделать sh, но, возможно, мне просто не хватает воображения.

Ответы [ 2 ]

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

в шаблоне:

[disabled]="isDisabled"

в файле TS:

get isDisabled(): boolean {
    return this.searchString.replace(/\*/g, '').length < 3;
}
1 голос
/ 24 апреля 2020

К сожалению, литерал RegExp не поддерживается языком шаблонов. Они должны быть на вашем компоненте.

Подробнее о Angular Выпуск репозитория Github: https://github.com/angular/angular/issues/21978

Для этого конкретного случая вы можете настроить валидатор паттернов и используйте что-то вроде этого: Validators.pattern('/\*/g')

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