Я разработал форму под angular-7 с проверкой ввода. Все элементы на входе работают нормально, кроме одного, который показывает индекс со значением 0.
Я искал в Интернете предлагаемые решения.
тип сценария:
constructor(private router: Router,
private service: BvUserService,
private fb: FormBuilder,
private toastr: ToastrManager,
private apiErrors: ApiErrorsService
) {
this.createForm = this.fb.group({
'Login': ['', Validators.required],
'OldPassWord': ['',Validators.required],
'Password': ['', [Validators.required, Validators.minLength(8), Validators.maxLength(12)]],
});
this.apiErrors.onError.subscribe(_ => { console.log('get error'); this.setErrors(); });}
setErrors() {
let error = this.apiErrors.getErrors(location.pathname);
// Pour chaque controle du formulaire
Object.keys(this.createForm.controls).forEach(key => {
const control = this.createForm.get(key);
// Suppression des erreurs de validation
control.setErrors(null);
// Obtention des A©ventuelles erreurs de validation
let errors = this.apiErrors.getFieldErrors(location.pathname, key);
if (errors && errors.length > 0) {
// Application des erreurs sur le controle
errors.forEach((value, idx) => {
control.setErrors({ [`${key}-${idx}`]: value }, { emitEvent: true });
});
}
control.markAsTouched();
});
html:
<mat-form-field class="example-full-width">
<input matInput placeholder="Entrez votre ancien mot de passe" [type]="hide ? 'password' : 'text'" formControlName="OldPassWord" required>
<mat-icon matSuffix (click)="hide = !hide">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>
<mat-error *ngFor="let error of getErrors('OldPassWord')">
{{error}}
</mat-error>
</mat-form-field>
</p>
ошибка:
{"key":"OldPassword","messages":["champs obligatoire"]}]}]
api-errors.service.ts:68 index 0 get error