件名でこれを達成できる可能性はありますか?当分の間、私はこれをプロミスで達成しただけです。だから私は解決メソッドを呼び出すと、それが正しく動作します。Subjectを使用してカスタム非同期バリデータを作成できますか?
私は以下を実行しようとしていました。
ここforbiddenEmail(control: FormControl): Observable<any> {
const obs = new Subject();
setTimeout(() => {
if (control.value === '[email protected]') {
obs.next({'emailIsForbidden': true});
} else {
obs.next(null);
}
}, 2000);
return obs;
}
、イム角度でドキュメントがバリデータについての言うように値が[email protected]、そうでない場合はnullであるときはいつでもイベントを放出しようとしています。 私はシミュレートしようとしていますが、バックエンドサービスは、なぜ私はsetTimeout機能を実装し、2秒のタイムアウトを与えることができると言うことができます。 問題は、私がバリデータ(電子メール入力要素)を置くinput要素を調べると、クラスng-pending
が常に表示されることです。 何らかの理由でそれを購読していない私はそれを知っています。しかし、どうすればいい?
これは私がフォームグループ内のバリデーターを呼び出すところです。
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([])
});
}
ありがとうございます。面白いことは、第二の方法didn; t何らかの理由で私のために働くことです。それはデモで動作しますが。それは再び保留に固執します。しかし、私はSubjectでそれを持っています。私は問題はサブジェクトが購読を解除する必要があり、それが完全であることだったと思いますか? – konstantinos