I am using angular5 forms with custom validation.
Но при сбросе формы ошибки проверки не сбрасываются.Я использую этот валидатор для проверки пробелов в текстовом поле.
Как мы сбрасываем элементы управления с состояниями валидации шаблонов управляемых форм в угловых 5?Я знаю, что элементы управления могут быть сброшены путем установки значений модели, к которым они привязаны
RequiredFieldDirective.ts
import { Directive, Input } from '@angular/core';
import { NG_VALIDATORS, Validator, AbstractControl } from '@angular/forms';
@Directive({
selector: '[requiredField][ngModel]',
providers: [{
provide: NG_VALIDATORS,
useExisting: RequiredFieldDirective,
multi: true
}]
})
export class RequiredFieldDirective implements Validator {
validate(c: AbstractControl): {[key: string]: any} {
console.log(c.value)
if(c.value){
let v = c.value.toString().trim();
return ( v == '')? {"requiredField": true} : null;
}
}
}
html
<input class="{{dashboardNameInput1.invalid && dashboardNameInput1.pristine && isFormInValid?'text-field-dashboard-inValidInput':'text-field-dashboard'}}"
name="dashboardName"
autocomplete="false"
type="text" i18n-placeholder placeholder="Dashboard Name"
[ngModel]="dashboard?.dashboardName"
maxlength="255"
required
requiredField
#dashboardNameInput1="ngModel"
/>
<br>
<span class="errorMessageDashboard" i18n *ngIf="dashboardNameInput1.errors?.requiredField">
Please Enter Dashboard Name.
</span>
<span class="errorMessageDashboard" [hidden]="dashboardNameInput1.valid || (dashboardNameInput1.pristine && !controlVariable?.dashboardName?.invalid)">
<span i18n *ngIf="dashboardNameInput1.errors?.required">
Please Enter Dashboard Name.
</span>
</span>
<button *ngIf="!editModeDashboardName" class="button-style-08" (click)="createNewDashboard(dashboardForm)" i18n>Add</button>
ts
@ViewChild('dashboardForm') dashboardForm;
updateDashboardName(dashboardForm){
this.dashboardForm.reset()
this.dashboardForm.resetForm()
dashboardForm.reset();
dashboardForm.resetForm();
}