我想创建一个异步自定义验证器来检查EmployeeId是否已经存在于窗体中。为此,我创建了一个自定义验证器并实现了一个调用Web API的服务。异步验证 - 无法从角度2访问自定义验证服务
当我试图寻找我得到一个错误的雇员说无法读取的不确定
任何人有想法财产“服务”如何做到这一点..
自定义验证
import { FormControl } from '@angular/forms'
import { HttpService } from '../Services/app.service';
export class EmployeeValidators {
constructor(private service: HttpService) { }
EmpIdCheck(control: FormControl) {
this.service.LoginCheck(control.value).subscribe(
data => {
if (data.length == 0 || data.length == 1) {
resolve(null);
} else {
resolve({ EmpIdCheck: true });
}
},
err => {
resolve({ EmpIdCheck: true });
}
)
});
}
}
组件
export class LoginComponent {
myForm: FormGroup;
constructor(private _HttpService: HttpService, private fb: FormBuilder) {
this.myForm = fb.group({
empId: ['', Validators.compose([Validators.required, Validators.pattern("^[0-9]*$"), Validators.minLength(5), Validators.maxLength(5)]), new EmployeeValidators(this._HttpService).EmpIdCheck],
password: ['', Validators.compose([Validators.required, Validators.minLength(6), Validators.maxLength(10)])]
});
}
服务
@Injectable()
export class HttpService {
public LoginCheck = (datas): any => {
let body = JSON.stringify({ datas });
return this._http.post(this.actionUrl, datas, {headers: this.headers}).map(this.extractData)
.do(data => console.log(data))
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body.Data || {};
}
private handleError(error: Response) {
console.log(error)
return Observable.throw(error.json() || "server error")
}
}