Angular2: изменить цвет границы для ошибки при проверке формы

Попытка изменить цвет границы для сообщения об ошибке. это мой html-код

<div class="form-group">
  <label>Name:</label>
  <div class="wpr">
    <div class="wpr__icon">
      <i class="fa fa-user"></i>
    </div>
    <input #name="ngModel" id="name" name="name" type="text" class="form-control text-line" [(ngModel)]="PersonInfo.name"
      pattern="[a-zA-Z0-9\s]+" required>
  </div>
  <ul class="alert-error" *ngIf="name.touched && name.errors">
    <li *ngIf="name.errors.required"> Name is required. </li>
    <li *ngIf="name.errors.pattern">Invalid name.</li>
  </ul>
</div>

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

Ответ 1

Вы можете использовать директиву ngClass чтобы добавить класс css в свое поле ввода, если оно недействительно:

<input #name="ngModel" id="name" name="name" type="text" class="form-control text-line"
[ngClass]="{'red-border-class': name.errors}" [(ngModel)]="PersonInfo.name" pattern="[a-zA-Z0-9\s]+" required>

Надеюсь, вам не нужна помощь в написании css. :-)

Ответ 2

Вот еще одно решение.

input.ng-invalid.ng-touched {
  border: 1px solid red;
}

Если вы проверите свое поле ввода, вы увидите некоторые классы css, которые Angular динамически присоединяет к вашему элементу, который вы можете использовать.

Ответ 3

Просто найдите класс.alert-error в файле css и добавьте свойство border.

.alert-error{
   ...
   border:1px solid red;
   color:red;
}

Ответ 4

Добавьте это вместо ng-if, потому что это не ng-if работает

Неверное имя.

Теперь все, что вам нужно сделать, это добавить класс, называемый

.has-error {
      border-bottom: 2px solid red;
}

или что хотите, и увидеть волшебство!

Вот скрипка для игры со многими правилами проверки http://jsfiddle.net/rohitkumar93/8rcbz0xt/2/

Ответ 5

Мы можем достичь разных путей, но лично я предпочел следующий путь.

HTML

<form [ngClass]="{ 'form-submit': isSubmit}" (ngSubmit)="onSubmit()" name="forgotPasswordForm" [formGroup]="forgotPasswordForm">                
  <input name="email" type="email" class="form-control" id="email" placeholder="Email" formControlName="email">
  <div class="invalid-feedback form-error" *ngIf="...">
    .......
  </div>  
 </form>

CSS:

.form-group input.ng-invalid.ng-touched, 
.form-group input.ng-invalid:focus, 
.form-group select.ng-invalid.ng-touched, 
.form-group textarea.ng-invalid.ng-touched,
.form-submit input.ng-invalid,
.form-submit select.ng-invalid,
.form-submit  textarea.ng-invalid
{
    border-color: #ff4c6a;
}

.invalid-feedback.form-error {
    display: block;
}