我创建了以下验证功能:
passwordValid(control:Control):{ [key: string]: any; } {
clearTimeout(this.timer);
if (control.value){
let q = new Promise((resolve) => {
this.timer = setTimeout(()=>{
this._http.post('/check', control.value)
.subscribe(
success=>{
resolve(null);
},
error=>{
resolve({'invalid': true});
})
},1000);
});
return Observable.fromPromise(q);
};
}
当我把它挂钩到这样的控件时:
control: ['', this.passwordValid.bind(this)]
它永远不会将控制验证更改为有效的'。它总是无效的。我做错了什么?
答案 0 :(得分:2)
使用您的代码,您将验证器注册为同步验证器(控件的第二个参数)。
对于异步的,您需要使用第三个参数:
control: ['', null, this.passwordValid.bind(this)]
这篇文章让您感兴趣:
答案 1 :(得分:2)
异步验证器应位于索引2
control: ['', null, this.passwordValid.bind(this)]