私は少しのためにこれをいじって、私はあなたがどのような反応性の形で箱から出して、この動作を得ることができないことを正しいことだと思いますあなたに教えてください。ただし、新しいクラスにバインドする指示を作成することができます。これにより、希望のスタイルにスタイルを設定できます。
FormControl
のBlur
イベントをリッスンするディレクティブを作成し、発生したときにそのフィールドが無効かどうかを確認します。もしあなたが自分のクラスを設定してから、スタイルをこのベースから外すことができます。
例:
@Directive({
selector: '[formControl]',
})
export class ValidationStatusDirective {
isValidated = false;
constructor(private el: ElementRef){}
@HostBinding('class.ng-validated') get ngValidated() { return this.isValidated; }
@HostBinding('class.ng-unvalidated') get ngUnvalidated() { return !this.isValidated; }
@HostListener('blur') validationStatusChanged(){
if(!this.isValidated &&
this.el.nativeElement.classList.contains('ng-invalid') &&
this.el.nativeElement.value.length > 0){
this.isValidated = true;
}
}
}
あなたは、すべてのHTMLを変更する必要はありません、入力が参考ng-invalid
とng-validated
両方あるときにだけスタイルを設定します。
<input class="form-control"
[formControl]="name"
#input
placeholder="Enter 3 or more characters">
スタイル:
input.ng-invalid.ng-validated{
border-color: red;
background-color: pink;
}
私は元気だと思っていますが、この質問を削除する可能性があります –
はい、これは元気で汚れたものです。ここで例を見つけることができますhttps://angular.io/guide/forms#track-control-state -and-validity-with-ngmodel – Nehal
実際にはこのシナリオの問題を解決するのに実際には元来は使用できませんが、私は質問を開いたままにします –