web-dev-qa-db-ja.com

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>

現在、エラーメッセージが表示されていますが、テキストボックスの境界線の色を赤に変更したいと思います。どうやってするか。

13
NNR

無効な場合、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を書く助けを必要としないことを願っています。 :-)

8
Stefan Svrkota

別の解決策があります。

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

入力フィールドを調べると、利用できる要素にAngularが動的に付加されているcssクラスを見ることができます。

cssファイルの.alert-errorクラスを見つけてborder propertyを追加します。

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

さまざまな方法を実現できますが、私は個人的に次の方法を好みました。

[〜#〜] 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;
}

Ng-ifは動作しないため、ng-ifの代わりにこれを追加します

無効な名前。

あとは、次のクラスを追加するだけです

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

またはあなたが望むものは何でも魔法を見る!

多くの検証ルールで遊ぶフィドル http://jsfiddle.net/rohitkumar93/8rcbz0xt/2/

0
Rohit Kumar