У меня есть демонстрационное приложение, показанное ниже, и я пытаюсь установить ошибки в пользовательских валидаторах, почему они не установлены.
Шаг: нажмите «Добавить пользователей» и введите значение. При изменении значения я вызываю валидатор клиента и устанавливаю ошибку или возвращаю ошибку, но она не установлена.
демонстрация: демонстрация
import { Component, VERSION } from '@angular/core';
import { FormArray, FormBuilder, FormGroup ,AbstractControl,Validators} from '@angular/forms';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
myForm: FormGroup;
constructor(private fb: FormBuilder) { }
ngOnInit() {
this.myForm = this.fb.group({
email: '',
users: this.fb.array([])
})
}
get userForms() {
return this.myForm.get('users') as FormArray
}
getColors(index) {
return this.userForms.get([index, 'colors']) as FormArray;
}
addUser() {
const userGroup = this.fb.group({
user: [],
colors: this.fb.array([])
})
userGroup.controls['user'].setValidators(this.validateMobileNo);
this.userForms.push(userGroup);
}
deleteUser(i) {
this.userForms.removeAt(i);
}
addColor(index: number) {
const colorGroup = this.fb.group({
color: []
})
this.getColors(index).push(colorGroup);
}
deleteColor(userIndex: number, colorIndex: number) {
this.getColors(userIndex).removeAt(colorIndex)
}
validateMobileNo(controller: AbstractControl): { [key: string]: any } { console.log(controller.value);
console.log("Returning null");
controller.setErrors({error: "ghhggh"});
return {error: "ghhggh"};
}
}