【发布时间】:2020-03-26 02:37:04
【问题描述】:
我想根据数据库中存在的数据设置验证错误。
带有自定义验证器功能的表单控件:
nUname: ['', [Validators.required,unique_uname]]
自定义验证器功能:
以下函数获取用户名并在服务中使用发布请求获取数据。如果用户名在数据库服务中,则返回状态为“S”的响应,否则状态为“F”的错误。
如果状态为“S”,则应将错误“uname_repeat”设置为表单控件。 uname_repeat 错误未在订阅中设置,但在订阅之外它按要求工作。
function unique_uname(){
return (control: AbstractControl): {[key: string]:any} | null => {
const uname = control.value;
if(uname.length!=0){
ser.get_user(uname).subscribe(
(res) => {
if (res['status']=='S') {
return {'uname_repeat':true} <-- This is not working
}
},
(err) => {
if (err['error']['status']=='F') {
return null;
}
}
);
return {'uname_repeat':true} <-- This working
}
return null;
};
}
需要什么修改才能得到预期的结果。
【问题讨论】:
-
你试过异步验证器吗?
标签: angular subscription form-control