Проблема:
Я получил набор ошибок из ответа службы и набор значений из ответа службы на основе имен полей. Я сопоставил значение и ошибки с полем. Значение установлено для всех элементов управления и работает нормально.
Но в случае ошибки, при возврате из службы она содержит ошибку, а при переходе к ошибке компонента имеет значение null. Как? 1005*
** Примечание. :
- Я не использую валидаторы, потому что мне нужно проверять фокусировку не в изменении значений или размытии.
- Это асинхронный c Проверки.
- Первоначально я получу ответное сообщение об ошибке на основе имен полей из службы. **
У меня есть требование установить ошибки на основе ответа службы при инициализации компонента:
В компоненте формы я объявил группы форм и элементы управления.
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();