Angular 8 - Редактировать реактивную форму с пользовательской проверкой - PullRequest
0 голосов
/ 26 марта 2020

У вас есть идеи, почему пользовательский валидатор не работает при редактировании Angular 8 Реактивная форма?

Я использую один и тот же компонент для создания и редактирования. Пользовательский валидатор работает без проблем в форме создания, но совсем не работает в форме редактирования.

Вот код:

export class CreateEmployeeComponent implements OnInit {
   employeeForm: FormGroup;

   constructor(private fb: FormBuilder,
               private route: ActivatedRoute,
               private employeeService: EmployeeService) { }

   ngOnInit() {
       this.employeeForm = this.fb.group({
           fullName: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(10)]],
           contactPreference: ['email'],
           emailGroup: this.fb.group({
               email: ['', [Validators.required, CustomValidators.emailDomain('gmail.com')]],
               confirmEmail: ['', [Validators.required]],
               }, { validator: matchEmails }),
               phone: ['']
           });

           this.route.paramMap.subscribe(params => {
               const empId = +params.get('id');
               if (empId) {
                   this.getEmployee(empId);
               }
           });
  }

  getEmployee(id: number) {
    this.employeeService.getEmployee(id)
      .subscribe(
        (employee: IEmployee) => this.editEmployee(employee),
        (err: any) => console.log(err)
      );
  }

  editEmployee(employee: IEmployee) {
    this.employeeForm.patchValue({
      fullName: employee.fullName,
      contactPreference: employee.contactPreference,
      emailGroup: {
        email: employee.email,
        confirmEmail: employee.email
      },
      phone: employee.phone
    });
  }
}

Если этот фрагмент кода слишком запутан, Не могли бы вы привести какой-нибудь пример, где реализовано редактирование реактивной формы с пользовательской проверкой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...