我有没有机会通过一个主题来实现这一目标?暂时我只是通过一个承诺来实现这一点。所以我调用了 resolve 方法,它工作正常。
我试图做以下事情。
forbiddenEmail(control: FormControl): Observable<any> {
const obs = new Subject();
setTimeout(() => {
if (control.value === 'test@test.com') {
obs.next({'emailIsForbidden': true});
} else {
obs.next(null);
}
}, 2000);
return obs;
}
在这里,我试图在值为 test@test.com 时发出事件,否则为 null,因为 Angular 中的文档说关于验证器。我试图模拟让我们说一个后端服务,这就是我实现 setTimeout 功能并给出 2 秒超时的原因。现在的问题是,当我检查放置验证器(电子邮件输入元素)的输入元素时,ng-pending
总是会显示类。所以,出于某种原因,我没有订阅它,我知道。但我怎么能?
这是我在 FormGroup 中调用验证器的地方。
ngOnInit() {
this.signupForm = new FormGroup({
'userData': new FormGroup({
'username': new FormControl(null, [Validators.required, this.forbiddenNames.bind(this)]),
'email': new FormControl(null, [Validators.required, Validators.email], this.forbiddenEmail.bind(this))
}),
'gender': new FormControl('male'),
'hobbies': new FormArray([])
});
}