angular Set Errors не настраивается для списка элементов управления, а возвращает список сообщений об ошибках в ответе на вызов службы для элементов управления

Проблема:

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

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

**Заметка:

  1. Я не использую валидаторы, потому что мне нужно проверять Focus вне изменения значений или размытия.
  2. Это асинхронная проверка.
  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);

Следующее обслуживание

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();

0 ответов

Другие вопросы по тегам