angular - 需要在异步验证器以角度反应形式运行之前调用服务
问题描述
我正在以反应形式验证一些数据。我已经为一段数据编写了一个异步验证器,以确保提供的数字是数据库中的有效数字。
validateData(control: AbstractControl): Observable<ValidationErrors | null> {
this.displayName = "";
if(this.form === undefined) { return of(null)}
return this.getData().pipe(
map(result => result ? null : {invalidNumber: true})
);
}
getData() : Observable<boolean> {
if(this.form.get('number') !== null && this.form.get('number').value !== null
&& this.form.get('number').value !== '') {
return this.service.getData(this.form.get('number').value).pipe(
map(data => {
this.data = data;
return data.id !== null
}))
}else{
return of(true)
}
问题是我需要在验证发生之前获取数据并将其存储在客户端中。我的限制是我无法在验证过程中存储数据。我试图从输入字段调用 getData() 方法 onBlur ,但异步验证器发生在 onBlur 方法之前,因此数据不存在。有什么想法可以解决这个问题吗?
解决方案
推荐阅读
- android - 删除firebase实时数据库中的数据后,如何从列表中删除特定项目?
- python - Python - 从下拉菜单中选择选项
- maven - 如何使用 TestNG 运行两次测试
- python - 二进制马尔可夫-K 随机发生器
- bash - Bash curl:使用 URL 的部分名称保存文件
- excel - VBA:将日期和一些文本写入 txt 文件
- python - 如何在不指定其他标签的情况下训练 spacy 识别标签?
- python - 在 VIM 或 Emacs 中为每个符号选择并插入
- verilog - Verilog - 是否可以在同一模拟期间创建两个 vcd 文件
- circuit-sdk - 是否可以编写一个只能由 Tendant 的参与者添加的机器人?