У меня есть сетка, сетка состоит из 7 столбцов, и на основе имен полей ответа службы я создал элемент управления, связывающий значения.
вариант использования 1: работает нормально
если ответ сервера сетки возвращается две строки данных, я связал две строки сетки, и каждый раз, когда пользователь меняет столбец, я должен делать запрос на сервер, и сервер будет проверять значения и отправлять ответ, проверка работает хорошо.
Проблема Вариант использования,
В сетке есть кнопка добавления строки, при нажатии на строку добавления создается динамический c элемент управления, если пользователь изменяет значение в ячейке, он сделает запрос и отправьте ответ, я установил ошибки и вернул ошибки в asyn c валидаторах.
Но есть ошибки, он показывает null в пользовательском интерфейсе.
result?.valid? null : control.setErrors({error: result.errormessage, hint: result.hintmessage});
return result?.valid? null : control.setErrors({error: result.errormessage, hint: result.hintmessage};
Я используя такой подход для валидаторов. установите asyn c валидаторы, как это
controlname.setAsyncValidators(this.formService.validators(this.formValidationService.loginAsyncValidator));
export const loginAsyncValidator = (authService: AuthService, time: number = 500) => {
return (input: FormControl) => {
return timer(time).pipe(
switchMap(() => authService.checkLogin(input.value)),
map(res => {
result?.valid? null : control.setErrors({error: result.errormessage, hint: result.hintmessage});
return result?.valid? null : control.setErrors({error: result.errormessage, hint: result.hintmessage};
);
};
};
Пример ссылки: это не точный сценарий, я следил за этой службой asyncvalidation. демо: демо