angular Set Errors не настраивается для списка элементов управления, а возвращает список сообщений об ошибках в ответе на вызов службы для элементов управления. - PullRequest
0 голосов
/ 12 июля 2020

Проблема:

Я получил набор ошибок из ответа службы и набор значений из ответа службы на основе имен полей. Я сопоставил значение и ошибки с полем. Значение установлено для всех элементов управления и работает нормально.

Но в случае ошибки, при возврате из службы она содержит ошибку, а при переходе к ошибке компонента имеет значение null. Как? 1005*

** Примечание. :

  1. Я не использую валидаторы, потому что мне нужно проверять фокусировку не в изменении значений или размытии.
  2. Это асинхронный c Проверки.
  3. Первоначально я получу ответное сообщение об ошибке на основе имен полей из службы. **

У меня есть требование установить ошибки на основе ответа службы при инициализации компонента:

В компоненте формы я объявил группы форм и элементы управления.

form.component.ts

forms: FormGroup;

in the ngOninit() life cycle
this.forms = this.formService.initializeForm();
// hit the service call and get a response and set the value and errors // value is setting and error is setting from service. when return to component it is nulll

this.forms = this.formService.setFormValue(fieldList, this.forms);

Next Service

export class FormsService {
    SERVER_URL: string = "http://localhost:8080/api/";
    constructor(private httpClient: HttpClient,
        private formBuilder: FormBuilder,
        private formCustomValidationService: FormCustomValidationService,
        private formValidationService: FormValidationService) {
    }

   InitializeForm(): FormGroup {
        let Form: FormGroup;
        Form = this.formBuilder.group({
            ProducNumber: ['', [Validators.required, Validators.minLength(1)]],
           ProductId: ['', [Validators.required, Validators.minLength(1)]],
           
        });
        return Forms;
    }

 
  

      setFormValue(successResponse: any, Forms: FormGroup): FormGroup {
            if (successResponse && successResponse.length > 0) {
                successResponse.map((response) => {
                    switch (response.fieldName) {
                        case 'ProducNumber':
                             Forms.controls?.ProducNumber.setErrors({ error: response?.ErrorMessage != null ? response?.ErrorMessage : null, info: response?.informationMessage != null ? response?.informationMessage : null });
                             Forms.patchValue({ ProducNumber: response.value != undefined ? response?.value : '' }, { emitEvent: false, onlySelf: true });
                            break;
                        case 'ProductId':
                            Forms.controls?.ProductId.setErrors({ error: response?.ErrorMessage != null ? response?.ErrorMessage : null, info: response?.informationMessage != null ? response?.informationMessage : null });
                            Forms.patchValue({ ProductId: response.value != undefined ? response?.value : '' }, { emitEvent: false, onlySelf: true });
                            break;
            
    
                    }
                });
            }
            return Forms;      // here error has set for all the fields 
        }


Here return forms From service, have return all the errors but when comes into the component it is not. But have all the values which I set according to controls.

в компоненте, он вернет здесь из службы, но здесь null, при возврате в службу есть ошибки.

   this.forms = this.formService.setFormValue(fieldList, this.forms);
     this.form.updateValueAndValidity();
        this.cdr.detectChanges();
...